Mostrando entradas con la etiqueta cpan. Mostrar todas las entradas
Mostrando entradas con la etiqueta cpan. Mostrar todas las entradas

domingo, 1 de junio de 2025

Dancer2: un framework web para Perl

Dancer2 es el framework web ligero de nueva generación para Perl. Esta herramienta proporciona una interfaz CLI atractiva y fácilmente extensible.

Veremos cómo instalarlo y crear un ejemplo sencillo.

Instalación de Dancer2

Abre una terminal y escribe esto:

$ cpan

Entrarás a CPAN, ahora instalamos Dancer2:

cpan> i Dancer2

Comenzará el proceso de descarga e instalación. Esperamos un poco (pueden ser algunos minutos).

Cuando finalice verificamos la instalación:

$ dancer2 version

Obtener ayuda:

$ dancer2 --help

Para crear un proyecto:

$ dancer2 gen -a MyWeb::App

Esto te creará un proyecto web con Dancer2.

Nos ubicamos en el directorio creado y ejecutamos la aplicación:

$ cd MyWeb-App
$ plackup -r bin/app.psgi

Abrimos un navegador en la siguiente dirección:

https://0.0.0.0:5000

Ahora crearemos un sencillo programa web sin la necesidad de crear un proyecto completo.

Un Hola, mundo con Dancer2

Creamos un sencillo script para el clásico "Hola, mundo".

dancr.pl

#!/usr/bin/env perl
use Dancer2;
get '/' => sub {
    return 'Hola, mundo con Dancer2';
};
start;

Ejecutamos el script:

$ perl dancr.pl

Abrimos un navegador en la dirección:

http://localhost:3000/

¡Hemos creado nuestra primera aplicación con Dancer2!

continuaremos con este tema en próximas entregas.

Enlaces:

https://perldancer.org/
https://medium.com/lets-fill-the-gap/dancer2-introduction-and-installation-8444079355fd

domingo, 20 de abril de 2025

Mojolicious: un framework para Perl

Mojolicious es un framework similar a Dancer2, cuyas características son:

  • Más completo que Dancer2, pero también más complejo. 
  • Ofrece WebSockets, testing integrado, plantillas, y soporte para aplicaciones en tiempo real. 
  • También tiene un modo lite para scripts rápidos (Mojolicious::Lite). 
  • No requiere muchas dependencias externas.

Instalación:

Opción 1:

$ cpan
cpan> install Mojolicious
cpan> quit

Opción 2:

$ cpan App::cpanminus
$ cpan Mojolicious

Nosotros elegiremos la primera opción.

Verificamos la instalación:

$ cpan
cpan> i Mojolicious::Lite
Module id = Mojolicious::Lite
    CPAN_USERID  SRI (Sebastian Riedel <kraihx@googlemail.com>)
    CPAN_VERSION undef
    CPAN_FILE    S/SR/SRI/Mojolicious-9.39.tar.gz
    UPLOAD_DATE  2024-11-23
    MANPAGE      Mojolicious::Lite - Micro real-time web framework
    INST_FILE    C:\Strawberry\perl\vendor\lib\Mojolicious\Lite.pm
    INST_VERSION undef

Creando nuestra primera aplicación

hola.pl

1
2
3
4
5
use Mojolicious::Lite;

get '/' => {text => 'Hola mundo desde Mojolicious'};

app->start;

Ejecutamos la aplicación:

$ morbo hola.pl

Abrimos el navegador en:

http://127.0.0.1:3000/

¡Hemos creado nuestra primera aplicación con Mojolicious!

Enlaces:

https://mojolicious.org/
https://mojolicious.io/

jueves, 17 de abril de 2025

Programando en Perl no. 7

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.

¿Para qué usarlo?

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?

Jai un lenguaje de programación inspirado en C++

Hoy hablaremos de un nuevo lenguaje de programación llamado Jai . Se trata de un lenguaje de programación que está desarrolland...

Etiquetas

Archivo del blog