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.
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.
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:
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 /"
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
- Si sabes inglés, empieza por la página web oficial del lenguaje.
- Ver: Perl Tutorial o Great Perl Tutorial For Begginers. Aquí todo está en inglés, pero es más visual. O en español: Tutorial de Perl en Español.
- Libro físico: Learning Perl de Randal L. Schwartz y Tom Phoenix. Para quienes les gusta abordar el proceso a fondo y no les gusta leer desde la pantalla.