Perl (Practical Extraction and Report Language) es uno de esos lenguajes que a todos llaman la atención, pero a muy pocos lo suficiente para adentrarse más en el.
Se dice que es mejor que Python, que Ruby.
Quienes lo han usado en su entorno laboral mencionan que es más útil que AWK para la manipulación de archivos. Mejor que un simple Shell (bash shell) para efectuar tareas relacionadas a la administración de sistemas.
Y que decir de los advenedizos como Powershell. Perl se considera como ese viejo confiable. Seguro y eficiente, pero pasado de moda, muy pasado de moda.
Simple, porque lo hecho en Perl, a pesar de los años, no deja de funcionar.
Quizás, en un futuro no muy lejano, lo usarás para el tratamiento y generación de ficheros de texto que con otros lenguajes te llevaría más tiempo. O es probable que tengas que administrar sistemas y muchos de los scripts que hay que darles mantenimiento sean escritos en Perl o deban ser trasladados a ese lenguaje.
Ahora seguiremos con los ejemplos.
Ejemplo 1. Crear un programa que ordene de manera alfabética el contenido de un archivo. El archivo contiene los siguientes datos:
archivo.txt
1 2 3 4 5 6 7 8 | manzana guayaba uva pera arandano platano naranja durazno |
ordenar.pl
use strict; print "\t Ordenar el contenido de un archivo \n"; open ( my $archivo, "<", "archivo.txt" ) or die $!; my @lineas = <$archivo>; print sort @lineas; exit;
Ejecutar:
$ perl ordenar.pl
Salida:
Programando en Perl arandano durazno guayaba manzana naranja pera platano uva
Ejemplo 2. Calcular el IMC de una persona. El programa deberá tener una función de calcule el IMC. Los datos de entrada serán el peso y talla de una persona.
imc.pl
use strict; use warnings; # Función para el cálculo de IMC sub calc_imc(){ print "\t [ Calcular el IMC de una persona ]\n"; print "Tu peso: "; chomp(my $peso=<STDIN>); print "Tu estatura: "; chomp(my $talla=<STDIN>); my $imc = &get_imc($peso,$talla); print "Un peso de: $peso y una talla de $talla da como resultado un IMC de: $imc\n"; } # Función 'main' del programa. sub main{ calc_imc(); } main();
Ejecutar:
$ perl imc.pl
Salida:
[ Calcular el IMC de una persona ] Tu peso: 45 Tu estatura: 1.55 Un peso de: 45 y una talla de 1.55 da como resultado un IMC de: 18.7304890738814
Ejemplo 3. Crear un script que verifique si un host está caído.
verifica.pl
#!/usr/bin/perl use strict; use warnings; # Solicitar al usuario el host a verificar print "Ingresa el hostname o dirección IP a verificar (ejemplo: google.com o 8.8.8.8): "; my $host = <STDIN>; chomp($host); # Validar que el host no esté vacío if (!$host) { die "Error: Debes ingresar un hostname o dirección IP válido.\n"; } # Determinar el comando ping según el sistema operativo my $ping_cmd; if ($^O =~ /Win32/i) { # Windows: usar -n 4 para 4 intentos $ping_cmd = "ping -n 4 $host"; } else { # Unix/Linux: usar -c 4 para 4 intentos $ping_cmd = "ping -c 4 $host"; } # Ejecutar el comando ping y capturar el resultado my $output = `$ping_cmd 2>&1`; my $exit_code = $?; # Verificar el resultado del ping if ($exit_code == 0) { print "El host $host está ACTIVO (responde al ping).\n"; } else { print "El host $host está CAÍDO o no responde al ping.\n"; print "Detalles del error:\n$output\n"; } exit 0;
Ejecución:
$ perl verifica.pl
Salida:
Ingresa el hostname o dirección IP a verificar (ejemplo: google.com o 8.8.8.8): facebook.com El host facebook.com está ACTIVO (responde al ping).
CPAN
CPAN (Comprehensive Perl Archive Network) es el repositorio principal para módulos y bibliotecas de Perl, y la herramienta cpan es el cliente oficial para interactuar con él. Algo similar a lo que es Maven de Java.
¿Para qué sirve? Nos sirve para:
- Para instalar, buscar, actualizar y gestionar módulos de Perl.
- Para ahorrarnos la vida programando algo que alguien más ya hizo.
Para instalar un módulo podemos:
Entrar al Shell:
>cpan Loading internal logger. Log::Log4perl recommended for better logging Starting with version 2.29 of the cpan shell, a new download mechanism is the default which exclusively uses cpan.org as the host to download from. The configuration variable pushy_https can be used to (de)select the new mechanism. Please read more about it and make your choice between the old and the new mechanism by running o conf init pushy_https Once you have done that and stored the config variable this dialog will disappear. Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call didn't work. The COLUMNS and LINES environment variables didn't work. at C:\Strawberry\perl\vendor\lib/Term/ReadLine/readline.pm line 410. cpan shell -- CPAN exploration and modules installation (v2.36) Enter 'h' for help. cpan> install Module::Name
O sin la necesidad de entrar al Shell:
cpan install Module::Name
Donde:
- Module es el módulo.
- Name el nombre de la función.
Comandos básicos
Instalar módulos (sin entrar al Shell):
$ cpan install Net::Ping
Buscar módulos (entrando al Shell):
cpan> m /Ping/
Listar módulos:
cpan> i
Listar módulo en específico:
cpan> i Net::Ping
Actualizar módulos:
cpan> upgrade
Actualizar módulos sin entrar al Shell:
cpan upgrade
Actualizar módulo en específico:
$ cpan install Net::Ping
Actualizar el propio CPAN:
cpan> install CPAN
Ver información de los módulos, en este caso de Net::Ping
cpan> d Net::Ping
Probar un módulo sin instalar:
cpan> test Net::Ping
Forzar la instalación de un módulo:
cpan> force install Net::Ping
Salir de CPAN:
cpan> quit
También es útil ver la onfiguración de CPAN:
cpan> o conf
Cambiar la configuración:
cpan> o conf urllist push http://mirror.cpan.org/
Una vez instalado el módulo Net::Ping podríamos modificar el programa que verifica si un host esta caído.
verificawithping.pl
#!/usr/bin/perl use strict; use warnings; use Net::Ping; # Solicitar al usuario el host a verificar print "Ingresa el hostname o dirección IP a verificar (ejemplo: google.com o 8.8.8.8): "; my $host = <STDIN>; chomp($host); # Validar que el host no esté vacío if (!$host) { die "Error: Debes ingresar un hostname o dirección IP válido.\n"; } # Crear objeto Net::Ping my $p = Net::Ping->new("icmp"); # Verificar si el host responde if ($p->ping($host, 2)) { # 2 segundos de tiempo de espera print "El host $host está ACTIVO (responde al ping).\n"; } else { print "El host $host está CAÍDO o no responde al ping.\n"; } # Cerrar el objeto $p->close(); exit 0;
Conclusión
Perl es un lenguaje con una curva de aprendizaje relativamente sencillo y con una amplia comunidad. Además cuenta con una considerable cantidad de librerías y framework que lo apoyan. Sin embargo, en la actualidad con el surguimiento de "nuevos" lenguajes de programación como Golang o Rust su futuro no estan promovedor.
Perl es útil para sistemas heredados, sistemas que requieren ciertos ajustes, actualizaciones o mantenimiento. Quienes tengan que hacer ese trabajo, deberán aprenderlo.
Para quienes no, es mejor vislumbrar otras alternativas (como Python).
Aquí seguiremos hablando sobre este lenguaje para quienes lo necesiten.
Enlaces:
https://www.perl.org/Empresas que usan Perl
¿Por qué y para qué usar Perl?
No hay comentarios:
Publicar un comentario