Fundamentos del lenguaje
27 pasos en 9 series de Perl.
Perl mantuvo unida a internet antes de que existiera la palabra backend: scripts CGI, pipelines de logs, bioinformática y los one-liners de sysadmin que todavía corren a las 3 de la mañana. Su lema — hay más de una manera de hacerlo — construyó un lenguaje de signos, contextos y regexes tan centrales que moldearon cada motor posterior (PCRE es 'compatible con Perl' por algo). Teclear Perl significa tres signos bajo tus dedos y coincidencias de patrones por todas partes.
Este tour cubre el Perl tal como mejor se escribe hoy: strict y warnings en cada archivo, las tres formas de variable y los contextos que alternan entre ellas, el kit de regex a fondo, map y grep por encima de los bucles explícitos, referencias para estructuras de datos reales y toques modernos como say y la desreferencia postfija. El bis entrega programas completos. Cada fragmento pasa perl -c y corre de principio a fin bajo Perl 5.38.
Escalares y signos
- Escalares y signosUn signo
$para cada valor individual, ya guarde una cadena o un número. - Arreglos y listasEl signo
@para el arreglo entero,$para un elemento, e índices negativos de regalo. - HashesLa forma clave-valor de Perl:
%para el hash entero,$más llaves para un valor.
Control de flujo
- if, elsif y unlessRamificar con
if, elelsifde una sola palabra de Perl yunlesspara el caso negativo. - Bucles foreachTres formas de
foreach: recorrer una lista, contar un rango y editar en el lugar. - Modificadores de sentenciaLas formas postfijas que ponen
if,unlessyfordespués de la sentencia que protegen.
Expresiones regulares
- Coincidencia con regexLigar cadenas a patrones con
=~, más!~y el modificador/i. - Sustitución con s///Buscar y reemplazar con
s///: ediciones globales, y/rcuando el original debe sobrevivir. - Grupos de capturaGrupos de captura de tres maneras: listas numeradas, entradas con nombre en
%+y cosechas con/g.
Listas y contexto
- Contexto escalar y de listaLa idea que hace a Perl ser Perl: la misma expresión significa dos cosas según quién la recibe.
- map y grepTransforma y filtra listas en una línea cada uno — y luego encadena ambos en un pipeline.
- Órdenes a medida con sortsort acepta un bloque comparador:
<=>para números,cmppara cadenas y lo que tú calcules.
Cadenas
- Funciones de cadenaEl kit diario de cadenas: mayúsculas, longitud, búsqueda, rebanado, split y join.
- Formato con sprintfPlantillas al estilo printf para columnas, relleno y bases numéricas.
- Heredocs con sangríaCadenas multilínea con
<<~, que quita la sangría para que el código quede bonito.
Subrutinas
- Subrutinas y @_La convención clásica de llamada: cada argumento llega en un arreglo plano llamado
@_. - Firmas de subrutinaParámetros con nombre en la propia declaración — estables desde Perl 5.36, sin desempacar
@_. - Subs anónimas y clausurasCódigo en una variable:
sub { ... }sin nombre devuelve una referencia que llamas con la flecha.
Referencias y estructuras
- ReferenciasCómo Perl apunta a arreglos y hashes en lugar de copiarlos.
- Hash de arreglosUna clave, muchos valores: la estructura de batalla para datos agrupados.
- Estructuras de datos anidadas
[]y{}anónimos se anidan a cualquier profundidad, como JSON antes de JSON.
Archivos y Perl moderno
- E/S de archivosLa forma moderna de open: tres argumentos, un handle léxico y
or die. - El feature say
printcon el salto de línea incluido, activado por el pragma feature. - Desreferencia postfijaDos escrituras de la misma desreferencia:
@$refcon signo inicial y el postfijo$ref->@*.
Bis
- word_freq.plUn reporte de frecuencia de palabras sobre un pasaje incrustado, impulsado por un solo hash.
- grade_report.plPromedia los puntajes por estudiante de un hash de arreglos en una tabla con calificaciones.
- log_parser.plAgrupa líneas de log por severidad con una sola regex de capturas con nombre.