Conceptos básicos de Perl: un curso intensivo para desarrolladores CGI

11

Perl es un lenguaje de programación. Es viejo. Es respetado. Está en todas partes. Si alguna vez has visto un script CGI ejecutando una aplicación web básica de finales de los 90, estabas mirando Perl.

Hace dos cosas bien. En primer lugar, reemplaza los archivos por lotes de DOS y los scripts de shell C. En segundo lugar, alimenta los servidores web. Ese es el contexto que importa ahora.

¿La buena noticia? El código fuente es gratuito. Los desarrolladores lo regalan. Puede descargar miles de scripts. Puedes estudiarlos. Puedes romperlos.

¿Las malas noticias? Gran parte de ese código es ilegible. Perl fomenta un estilo tan críptico que roza la ofuscación. Si no sabes lo que estás haciendo, no sabrás lo que estás leyendo.

Esta guía asume que ya codificas. Si conoces C, estás por delante. Si no, empieza aquí. Nos saltamos la filosofía. Llegamos a la sintaxis.

Poner en marcha el intérprete

Necesita el intérprete de Perl.

Si estás en UNIX, probablemente esté ahí. 99,99% de probabilidad. Comprueba tu terminal.

Si estás en Windows o Mac, ve al sitio oficial. Descargue la última versión. Instálalo. Perl es gratis. Es de código abierto. Existe desde 1987. No pienses demasiado en la instalación.

Una vez instalado, busque el directorio DOCS. Viene con el paquete. Escanéalo. No leas cada palabra todavía. Es denso. Está seco. Pero es exacto. Lo necesitarás más adelante, cuando lo básico deje de tener sentido.

Tu primer guión

Establece tu camino. Incluya el ejecutable de Perl. Abra un editor de texto. Cree un archivo llamado test1.pl.

Escribe esto:

Guárdalo. Abra su símbolo del sistema. Tipo:

Verás “¡Hola mundo!” en la pantalla. Eso es estándar. Esa es la salida estándar.

En UNIX, puede agregar #!/usr/bin/perl a la primera línea. Luego puedes simplemente escribir ./test1.pl. Limpiador. Más rápido.

El comando imprimir sale a la salida estándar. El \n es un avance de línea. Simple.

Prueba esto:

Dos líneas. Un comando.

¿Por qué funcionó? Por las comillas dobles. En Perl, las comillas dobles desencadenan la interpretación de comillas. Analiza caracteres de escape.

¿Usar comillas simples?

Ahora ves texto literal. \n permanece como \n. Sin interpretación. Sin magia.

También está el carácter de comillas: `.

Esto ejecuta un comando del sistema operativo. La salida se imprime en la pantalla. En Windows, cmd /c es necesario. dir no es un ejecutable. Es un comando integrado del intérprete de comandos.

Si intenta print 'dir'; en Windows NT, falla. Necesitas el envoltorio de shell.

Tenga en cuenta el carácter /. Se utiliza para expresiones regulares. Lo verás en todas partes.

print toma comas como separadores:

También toma puntos como operadores de concatenación:

El período une hilos. La coma separa los argumentos.

A los programadores de C les gustará “printf”. Funciona exactamente como C.

Variables y tipos de datos

Las variables de Perl no necesitan declaración. Existen en el momento en que los asignas.

Utilice siempre un símbolo $.

Las comillas dobles interpretan los escapes. Las comillas simples no.

Los números también funcionan.

\t es una pestaña. Perl lo maneja.

La concatenación de cadenas utiliza el punto:

La taquigrafía existe. .= funciona como +=.

matrices

Las matrices comienzan con @.

Las matrices están indexadas a cero. Como C. Como Java. Como Pitón.

La notación $#a le proporciona el índice más alto. No el conteo. El índice. Entonces, si tiene tres elementos, $#a es 2.

hashes

Los hashes comienzan con %. Son pares clave-valor.

‘barra’ está vinculado a ‘perro’. ‘maullido’ a ‘gato’.

Hay una sintaxis más limpia. El operador =>.

Cita el lado izquierdo. Actúa como una coma. Hace que el código sea legible. Úselo.

Perl es fácil una vez que dejas de luchar contra la sintaxis. Los conceptos básicos son sencillos. En las cosas avanzadas es donde las cosas se ponen raras. Cíñete al núcleo. Domina las variables. Domina las reglas de cotización.

El resto son sólo patrones. Y malos hábitos.

Si ha pasado algún tiempo en C, la sintaxis de Perl le resultará familiar. Se inspira en gran medida en ese linaje, pero afloja el control del rigor.

Tome un bucle for. Se ve exactamente como esperas:

También puedes apoyarte en declaraciones ** while ** para iteraciones más simples. Aquí, la variable aumenta dentro del bloque:

Las puertas lógicas siguen las mismas reglas que C. Utilice && para “y”, || para “o” y ! para “no”.

Nota: Perl ofrece un segundo conjunto de operadores de comparación para cadenas. Mientras que == verifica la igualdad numérica, eq verifica la igualdad de cadenas.

Los operadores numéricos siguen siendo estándar:
== (igual)
!= (no igual)
<, <=, >, >=

Pero si se trata de texto, es posible que prefiera las alternativas basadas en palabras:
eq (igual)
ne (no igual)
lt (menos que)
le (menor o igual)
gt (mayor que)
ge (mayor o igual)

Iterando a través de matrices

Recorrer una colección en Perl es limpio gracias a foreach. Asigna cada elemento de una matriz a una variable escalar uno por uno.

Aquí, $b toma el valor de ‘perro’, luego ‘gato’ y luego ‘anguila’. El ciclo finaliza cuando se agota la matriz @a.

La regla de la llave

Hay una regla de sintaxis no negociable en Perl: llaves.

Debe utilizar { y } para ajustar bloques de código, incluso si el bloque contiene solo una línea.

Omita las llaves y el compilador se quejará.

Escritura de subrutinas

Las funciones en Perl se definen utilizando la palabra clave sub.

Cuando llamas a una subrutina, todos los argumentos que se le pasan se meten en una matriz especial llamada @_.

La variable $#_ devuelve el índice más alto de la matriz @_. Dado que las matrices tienen un índice cero, esto efectivamente le brinda el recuento de parámetros menos uno.

Es un poco obtuso, pero una vez que te acostumbras, es eficiente.

Alcance variable y valores de retorno

Para evitar contaminar el espacio de nombres global dentro de una función, declare variables locales usando la palabra clave local.

También puedes llamar a una función explícitamente usando el símbolo &.

Técnicamente, & solo es necesario cuando hay ambigüedad en el analizador. Pero muchos desarrolladores lo utilizan por costumbre para ser explícitos.

Para enviar un resultado a la persona que llama, utilice la palabra clave return.

Entrada y salida

La lectura del flujo de entrada estándar (STDIN ) es sencilla. El operador de corchete angular lee una línea a la vez.

Esto supone que la entrada es un entero válido. Si el usuario escribe basura, la lógica se rompe.

Para entradas de un solo carácter, utilice getc :

O utilice la función leer, que especifica la longitud de la entrada a capturar.

El “1” al final dicta que solo se lee un carácter.

Datos de entorno y línea de comandos

Perl expone datos del sistema a través de variables globales.

El hash %ENV contiene todas las variables de entorno. Recuerde, las claves deben estar en mayúsculas.

Si necesita acceder a los argumentos de la línea de comandos, mire la matriz @ARGV.

  • $ARGV[0] es el primer argumento.
  • $ARGV[1] es el segundo.
  • $#ARGV te da el índice del último argumento (cuenta menos uno).

Esto facilita la creación de scripts que acepten entradas dinámicas sin valores codificados.

¿Perl sigue siendo relevante?

Es una pregunta justa. ¿Los programadores todavía usan Perl? Sí.

¿Se seguirá utilizando Perl en 2024? Sí, aunque su papel ha cambiado. Es un lenguaje dinámico, interpretado, de alto nivel y de propósito general. No domina los nuevos proyectos web nuevos como lo harían Python o Node.js.

Sin embargo, Perl sigue siendo una potencia para la administración de sistemas y el mantenimiento heredado. Destaca en el procesamiento de textos y en la creación de secuencias de comandos rápidas.