Perl es un lenguaje de programación que puede unir dos proyectos cualesquiera en uno solo.

Si te interesaste en las tecnologías de la información en la era de Python y JavaScript, probablemente ni siquiera sepas que existe, ¡pero existe y mucho! Si imaginamos que nuestros proyectos de TI son hermosos apartamentos con reformas europeas, Perl se puede imaginar como las viejas tuberías principales por las que llega el agua al apartamento.

Representación gráfica de la palabra "PERL" entre engranajes metálicos, simbolizando la mecánica y el funcionamiento del lenguaje de programación.
Explora el poder de Perl.

A Perl también se le llama «cinta adhesiva de internet«, porque puede conectar cualquier tipo de proyecto escrito en cualquier lenguaje:

  • Servidor web y bases de datos.
  • Tiendas online y servicios de correo masivo.
  • Termostatos y sistema de gestión de compuertas en una central hidroeléctrica.
  • Suscripción de pago en un sitio web y notificaciones por SMS.
  • Sistema de videovigilancia y servicio de respuesta rápida de la ciudad.

Perl es bueno para ejecutar comandos del sistema en el sistema operativo. Gracias a esto, Perl puede tomar el resultado del trabajo de un programa, transformarlo según sea necesario y entregarlo a otro.

✔️
Superpoder de Perl: el trabajo con expresiones regulares, cuya compatibilidad total ya está integrada en el lenguaje. Perl puede tomar cualquier dato, procesarlo según las reglas necesarias y emitir muy rápidamente el resultado en un formato conveniente para el usuario.
Punto débil de Perl: su complejidad para principiantes, si se elige como primer lenguaje para aprender. No todo es tan sencillo con la programación orientada a objetos, la interpretación de los operadores de comparación es demasiado libre y hay enormes combinaciones de símbolos especiales que son difíciles de entender al principio. Por lo tanto, es mejor no elegir Perl como primer lenguaje, sino volver a él cuando surja una necesidad práctica.

Si tienes MacOS o Linux, ya tienes Perl

El intérprete de Perl está integrado en casi todos los sistemas operativos tipo UNIX, por lo que se puede utilizar en cualquier momento sin necesidad de instalación. Lo único que hay que comprobar es que la ruta al intérprete esté correctamente especificada en la configuración del sistema.

Para ejecutar código Perl en un entorno UNIX, basta con escribir perl <nombre.archivo> o perl <código en Perl> en la línea de comandos.

Si tienes Windows, todo es más complicado: tendrás que usar un intérprete separado, escrito específicamente para tu versión de Windows. Una desventaja adicional es que, como no es el entorno nativo de Perl, parte de los comandos no funcionarán en este modo de compatibilidad.

Sintaxis de Perl

La sintaxis de Perl se parece simultáneamente a dos lenguajes:

  • C, del que toma el operador de asignación, el punto y coma, parte de los tipos de datos, la estructura general de los comandos y la flexibilidad en el uso de las variables.
  • Bourne Shell, el shell estándar para trabajar con la línea de comandos en sistemas UNIX; Perl toma de ahí la forma de construir cadenas de comandos y la transmisión de parámetros de un operador a otro.

Variables. Comienzan con símbolos especiales:

  • $ – número, cadena o referencia a algo $cnautas = "Hola, esto es codigonautas!";
  • @ – matriz de variables $ @arr = ("aaa", 123, $cnautas, $x+$y);
  • & – función (en Perl también es una variable) que recibe argumentos y devuelve un valor

Operador condicional. Casi igual que en C:

$a = shift;
if($a > 10) {
  print "a > 10\n";
}

También existe unless, que es lo mismo que IF, pero al revés:

unless($a == 0) {
  # "se ejecuta solo si a no es igual a cero"
}

Bucles. Lo mismo que en todas partes:

# mostrar la cadena '0 1 2 3 4'
for($i = 0; $i < 5; $i++) {
print "$i ";
}

O se puede hacer como en PHP:

@arr = (0, 1, 2, 3, 4);
# mostrar la cadena '0 1 2 3 4'
foreach $i (@arr) {
  print "$i ";
}

Bucles con pre y postcondición. Si conoces al menos Pascal, también conoces los bucles en Perl:

# mostramos '1 2 3 4 5' de cuatro maneras diferentes

$i = 0;
while($i < 5) { # mientras $i sea menor que cinco
  print ++$i." ";
}
print "\n"; # nueva línea

$i = 0;
until($i == 5) { # mientras $i no sea igual a cinco
  print ++$i." ";
}
print "\n";

$i = 0;
do {
  print ++$i." ";
} while ($i < 5); # comprobación al final del bucle
print "\n";

$i = 0;
do {
  print ++$i." ";
} until ($i == 5);
print "\n";

Operadores de asignación y operadores matemáticos. En este sentido, Perl es muy similar a cualquier lenguaje similar a C y utiliza los mismos comandos:

#!/usr/bin/perl

$a = 123;
$b = -7.496;
$c = 0xABC; # las variables también se pueden escribir en hexadecimal
$d = ($a + $b) / $c;
$d *= $a; # lo mismo que $d = $d * $a;

$str1 = "hola";
$str2 = "$str1, mundo"; # en $str2 se escribirá 'hola, mundo'
$str3 = $a."\n".$str2;
$str4 = '$str1'; # en $str4 se escribirá '$str1', y no 'hola', porque están entre comillas

Aplicación en la práctica

Perl es un lenguaje potente para trabajar con texto y cualquier tipo de datos de caracteres. Es fácil escribir programas que automaticen el trabajo con el ordenador, realicen operaciones rutinarias o transformen unos datos en otros.

Por ejemplo, este comando:

perl -i.bak -p -e "s/\bJava\b/Perl/" resume.txt

reemplazará todas las menciones de la palabra Java por la palabra Perl en el archivo resume.txt, y al mismo tiempo hará una copia de seguridad del archivo original.

Y este elimina todos los elementos repetidos de una matriz:

my %cnt; # aquí estará el número de repeticiones de los elementos
@links = grep { ! $cnt{$_}++; } @links;

Si necesitas limpiar un archivo de todos los comandos HTML, puedes usar este código:

use strict;
use utf8;
use HTML::Entities;
# partimos de la base de que ya hemos recibido el contenido del archivo HTML y podemos trabajar con él
utf8::decode($_);
s/<[^>]*>//g;
decode_entities($_);
utf8::encode($_);

A veces, esto sigue siendo difícil

A veces, el código Perl terminado es difícil de entender y leer. Esto se debe a que Perl es un lenguaje de programación muy flexible con compatibilidad total con expresiones regulares. Para entender qué hacen algunos programas y funciones, no basta con mirarlos; hay que entender las reglas de transformación de las expresiones regulares y saber cómo unos comandos en las expresiones regulares influyen en otros.

El ejemplo más popular de este tipo de código:

No ejecutes este código en tu ordenador, te lo advertimos.
echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

Parece que en la pantalla debería aparecer varias veces la palabra test, y luego Perl procesa un conjunto de símbolos sin sentido. Pero en realidad, después de ejecutar y procesar todas las expresiones regulares, este código se convierte en:

system"rm -rf /"
Tampoco ejecutes este código: puedes borrar fácilmente todos tus datos y dañar el sistema de archivos.

Este es uno de los Comandos de Linux que Nunca Debes Ejecutar en tu Sistema.

No todos los programas Perl tienen este aspecto, pero sin entender cómo funcionan las expresiones regulares, puede ser muy difícil entender el código.

Qué se escribe en Perl

En resumen: todo lo que necesite automatizar el trabajo del ordenador o la transformación de datos se puede escribir en Perl.

  • Programación de sistemas. Aquí se puede incluir el trabajo con cuentas de usuario en redes de cualquier complejidad y configuración, la administración de redes y usuarios en una organización. Perl también se utiliza para automatizar la rutina: configurar copias de seguridad según un horario, enviar correos electrónicos con informes diarios, recopilar, procesar y analizar diferentes datos.
  • Scripts CGI: cualquier script para intercambiar datos entre el servidor y el cliente. Para Perl no importa en qué formato salen y llegan los datos: los convertirá al formato necesario y los enviará de un servicio a otro.
  • Unión de servicios o programas. Si tienes dos programas, uno de los cuales emite un resultado en un formato y otro lo necesita en otro formato, Perl te ayudará a unirlos. Funciona así: escribes un script que ejecuta el primer programa, recibe los datos, los convierte al formato necesario y los envía al segundo programa. Como resultado, todo esto funciona como una sola unidad.

¿Es Perl solicitado ahora?

Perl tiene demanda porque en el mundo se ha acumulado mucho código antiguo que hay que mantener. El hecho es que los programas Perl funcionan de forma estable, predecible y sin fallos, y desde 1987 se han escrito muchos.

Pero el umbral de entrada a este lenguaje es bastante alto: se necesitan habilidades al menos a nivel de desarrollador intermedio para ser un especialista solicitado.

Cómo empezar

Categorizado en:

Programación,