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

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?

domingo, 23 de septiembre de 2012

Microsoft Power Shell ... el MS-DOS mejorado




MPS (Microsoft PowerShell) 

Permite automatizar tareas, algo así como lo que puedes hacer con MS-DOS pero a un mejor nivel.  Es como tener una terminal Linux en Windows.

Algunos comandos son: get-help,get-alias,get-help-dir,ls y dir (para ver una lista de directorios/archivos), clear, date,exit, entre muchos más.

Ejemplos.

1. Usar el comando cd para colocarnos en un directorio (Documents)

PS C:\>cd ./Documents

2. Obtener servicios
PS C:\>get-service

Puedes usar los comandos MS-DOS y combinarlos con los de PS. Los archivos PS se guardan con la extensión *.ps1 



PowerShell  para novatos

0- Comentarios
<#
puedes usar
comentarios multilínea
para tus programas
#>

#comentario simple

1. Hola mundo.

1.1 Usando comillas:
"Hola mundo desde PowerShell"

1.2 Usando echo:
echo "Hola mundo desde PowerShell"

1.3 Usando Write-Host:
Write-Host "Hola mundo desde PowerShell"

2. Definir una variable y mostrarla.
$miVariable="soy una cadena"

2.1 Con write-host:
write-host $mivariable

2.2 Con echo:
echo $miVariable

2.3 Directamente
$miVariable

3. Introducir datos.
$nombre = Read-Host "Tu nombre es: "
$edad= Read-Host "¿Cuántos años tienes?"
write-host "Te llamas $nombre y tienes $edad años"

4. Operaciones básica: suma, resta , producto y división
$a=34
$b=25
$suma= $a+$b
$resta= $a-$b
$producto= $a*$b
$division= $a/$b
write "$a + $b = $suma"
write "$a - $b = $resta"
write "$a * $b = $producto"
write "$a / $b = $division"


5. Operadores aritméticos y booleanos.
-eq (==)
-ne (!=)
-gt (>)
-ge (>=)
-lt (<)
-le (<=)

-and
-or
-not


$a=99
$b=2
Write-Host "a= $a  y b= $b"
$result=($a -lt $b)
write-host "($a -lt $b): $result"
$result=($a -gt $b) -or ($b -lt $a)
write-host "($a -gt $b) -or ($b -lt $a): $result"
$result=($a -eq $a) -and ($b -lt $a)
write-host "($a -eq $b) -and ($b -lt $a): $result"

6. Crear una función.

function mensaje{
 "hola desde una función"
}

#invocar
mensaje

7. Uso de for y foreach.
$lista={3,4,4,5,6}
$plazo=9
for($i=0;$i -lt 5;$i++){
   write-host "$i"
}
write-host ""

foreach ($l in 0..$plazo){
  write-host "$l"
}



















Enlaces de interés:
http://elpaladintecnologico.blogspot.mx/2009/02/que-es-powershell-ejemplos-basicos-para.html
http://www.aprendeinformaticaconmigo.com/powershell

miércoles, 29 de febrero de 2012

Programación Batch


La programación en Batch no es muy popular realmente. Los desarrolladores web (backend o frontend) se enfocan más en otros lenguajes y herramientas. Sin embargo, existe una sección de éstos quienes deben crear scripts para automatizar tareas y crear algunas otras soluciones. Ya sea CMD (o BAT), Bash Linux o PowerShell. 

He aquí unos ejemplos  en bash MS-DOS:

Colocar variables
@echo off
set Nombre=Horacio Gomez
echo %Nombre%
pause


Imprimir por pantalla
echo algo

Cambiar el prompt
prompt mister_negativo:
mister_negativo:  


menu.bat
@echo off
Title Menu del sistema
color f0
cls
:miMenu
echo Menu
echo 1. Comprobar conexion a Internet
echo 2. Conectarse al servidor GlassFish
echo 3. Abrir administrador GlassFish
echo 4. Salir
echo Tu opcion es:
set /p opc=

if %opc%==1 goto :miConexion
if %opc%==2 goto :GlassFish
if %opc%==3 goto :conectarAGlassF
if %opc%==4 goto :salida

:miConexion
ping www.google.com.mx
goto miMenu


:GlassFish
cd C:\Users\alguien\glassfish3
cd C:\Users\alguien\glassfish3\bin
start asadmin


:conectarAGlassF
start firefox http://localhost:4848
goto miMenu

:salida
exit

Espero hacer más ejemplos.

Enlaces:

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