Como veo que no hay mucho material de Perl acá y si varios interesados... les dejo un tutorial que acabo de hacer... otro dia termino la segunda parte.
Programación en Perl I Al igual que ustedes yo también aprendo por lo cual quiero compartir lo que yo se con ustedes para que todos juntos podamos aprender cada ves mas.
Perl es un lenguaje scripting interpretado, eso significa que necesitamos un software que leerá nuestros scripts y los ejecutará.
Les demostraré que tan facil puede ser aprender este lenguaje tan flexible, útil y facil de aprender.
Este tutorial va dedicado a usuarios de Linux en todas sus distribuciones ya que por defecto viene el software que ejecutará nuestros scripts llamado “Perl”, en el caso de Windows tendrás que instalar “Active Perl” y “Cygwin” para acomodar cada función de linux y hacer mas poderosos nuestros scripts.
Mi primer scriptAbrimos nuestro editor de texto (en Linux podemos usar gedit, kwrite o lo que sea... en Windows usaremos el block de notas) y comenzaremos a crear nuestro primer script:
#!/usr/bin/perl -w
#test.pl
¿Que significa cada linea, como lo ejecutamos y que hace?Cada linea que comienza con el carácter "#" será omitido al momento de ejecutarse el script, esto significa que son comentarios o cualquier cosa que quieras escribirle, esto no se ejecutará ni será tomado en cuenta.
En el caso de linux esto significa que es un código en perl e indica la dirección de perl, esto siempre Debes ponerlo al rpincipio, si no lo pones no pasa nada pero si se hace por costumbre para identificar que es un script en perl. Al pasar el mouse sobre el archivo este tomará el ícono de ejecutable devido a esa primera linea y será cosiderado un "script en Perl".
#!/usr/bin/perl -w
Ahora pongo un comentario para indicar el nombre del archivo (esto no es obligación pero yo lo puse para mayor orden).
#test1.pl
Ahora ejecutamos un print para escribir en pantalla la palabra hola. Esto puede crearse de muchas maneras según lo necesites, también esribimos “\n” el cual significa que al final de la palabra hola se escribirá el carácter “return” para seguir en la linea de abajo.
Esto también podemos ejecutarlo de las siguientes maneras:
Al igual que en el lenguaje C++ puedes utilizar "
printf" de la misma manera pero no "
echo".
Acá le decimos que es el término del script, puedes no ponerlo pero se hace por costumbre en un buén script. Cuando digo exit(0) significa que no hubo errores, si escribo exit(1) le estoy diciendo al sistema que se produjo un error o los resultados no fueron lo esperado, esto lo puedes utilizar en complementos que veremos en otra oportunidad.
exit(0);
¿Como lo ejecutamos?Guardaremos nuestro texto en el escritorio como test1.pl y desde la consola de comandos ejecutaremos lo siguiente:
En Linux: perl ./test.pl
En Windows: c:\perl\perl.exe "%homepath%\escritorio\test.pl"Nos aparecerá la palabra hola
yan@Lola:~/Desktop$ perl ./test.pl
hola
yan@Lola:~/Desktop$
Ahora para practicar escribiremos algunos textos en pantalla:
#!/usr/bin/perl -w
#test2.pl
print "Como puedes ver acá escribio que sea sin problemas y con el carácter '\\n' hago return.\n"; printf "También puedo utilizar printf de la misma manera. Ahora vamos a salir del programa:\n"; print("Como ves esto no se ejecuta porque ya salí :p");
While y for
Estas dos funciones son muy útiles para automatizar todo un proceso:
#!/usr/bin/perl -w
#test3.pl
my $cuenta = 1;
#-------------------------------------------------------------------------------------------------
print "Escribiremos desde 000 hasta 100\n"; for $i ( "000" .. "100" ) {
}
#-------------------------------------------------------------------------------------------------
print "Escribiremos 100 más, pero con while:\n"; while ( $cuenta <= 100 ) {
$cuenta++;
}
#-------------------------------------------------------------------------------------------------
print "Fijate que si no le pongo comillas no tomará los ceros al comienzo:\n"; for $i ( 000 .. 100 ) {
}
#-------------------------------------------------------------------------------------------------
¿Que tal si me escribes en pantalla 100 veces la frase "no molestaré mas a mis compañeros" ? a Vart de los Simpsons de seguro le gustaría jajaja:
#!/usr/bin/perl -w
#test4.pl
for $i ( "000" .. "100" ) {
print "No molestaré mas a mis compañeros.\n"; }
Si te fijas utilizé tres formas diferentes de hacer lo mismo, además con el carácter "#" puse unas lineas para separar cada código y así se vea mas ordenado.
Ustedes dirán... ¿Para que sirve "
my $cuenta = 1;"? :
Declaraciones#!/usr/bin/perl -w
#test5.pl
my $saludo = "Hola";
my $nombre = "WHK";
print "$saludo $nombre , como estas?";
Esto nos escribirá lo siguiente:
yan@Lola:~/Desktop$ perl ./test5.pl
Hola WHK , como estas?
yan@Lola:~/Desktop$
También podemos crear una declaración de diferentes formas:
#!/usr/bin/perl -w
#test6.pl
my ($saludo, $nombre);
$saludo = "Hola";
$nombre = "WHK";
print "$saludo $nombre , como estas?\n";
Variables#!/usr/bin/perl -w
#test7.pl
my ($saludo, $nombre);
unless (@ARGV == 1) { die "uso: $0 Nombre\n" } ($nombre) = @ARGV; $saludo = "Hola";
print "$saludo $nombre , como estas?\n";
¿Que significa esto?
No se asusten :p es facil, es mas... puedes copiar el código y usar siempre el mismo, solo cambias ciertas cosas que te diré ahora,
Cuando ejecutas tu script te dirá lo siguiente:
yan@Lola:~/Desktop$ perl ./test7.pl
uso: ./test.pl Nombre
yan@Lola:~/Desktop$ perl ./test7.pl WHK
Hola WHK , como estas?
yan@Lola:~/Desktop$
Si te fijas la primera ves que lo ejecuté me decía como utilizarlo... que primero debería ejecutar el script mas un espacio y el nombre, al ejecutarlo nuevamente le di mi nombre y me lo escribió...
yan@Lola:~/Desktop$ perl ./test7.pl Octalh
Hola Octalh , como estas?
yan@Lola:~/Desktop$
Ahora implementemos variables con declaraciones for o while
, no se asusten con tanta palabrería porque no es tan dificil cuando escribes por ti mismo el código:
#!/usr/bin/perl -w
#test8.pl
my ($cuenta);
unless (@ARGV == 1) { die "uso: $0 Cuenta\n" } ($cuenta) = @ARGV;
for $i ( 1 .. $cuenta ) {
print "Escribiendo $i...\n"; }
Esto me dará lo siguiente:
yan@Lola:~/Desktop$ perl ./test8.pl 10
Escribiendo 1...
Escribiendo 2...
Escribiendo 3...
Escribiendo 4...
Escribiendo 5...
Escribiendo 6...
Escribiendo 7...
Escribiendo 8...
Escribiendo 9...
Escribiendo 10...
yan@Lola:~/Desktop$
Si quieres agregar mas de una variable tendrás que modificar su código:
#!/usr/bin/perl -w
#test9.pl
my ($cuenta, $palabra);
unless (@ARGV == 2) { die "uso: $0 [Palabra] [Cuenta]\n" } ($palabra, $cuenta) = @ARGV;
for $i ( 1 .. $cuenta ) {
print "$palabra $i...\n"; }
Esto quiere decir:
unless (@ARGV == 2) { die "uso: $0 [Palabra] [Cuenta]\n" } ($palabra, $cuenta) = @ARGV;
Si las variables no son 2 entonces que no ejecute nada y que diga su utilización y si hay dos variables entonces la primera será
$palabra y la segunda será
$cuenta. Puedes modificar ese orden a tu gusto o agregarles las variables que tu quieras.
$0 significa el nombre del mismo archivo que estás ejecutando.
If y ElseAhora les voy a mostrar algo muy útil:
#!/usr/bin/perl -w
#test10.pl
my ($cuenta, $palabra);
unless (@ARGV == 2) { die "uso: $0 [Palabra] [Cuenta]\n" } ($palabra, $cuenta) = @ARGV;
if ($cuenta == 0) {
$cuenta = 10;
}
else {
for $i ( 1 .. $cuenta ) {
print "$palabra $i...\n"; }
}
Esto significa que cuando ejecutes el script primeramente verificará la variable:
unless (@ARGV == 2) { die "uso: $0 [Palabra] [Cuenta]\n" } ($palabra, $cuenta) = @ARGV;
Luego verificará que si la variable $cuenta es igual a cero entonces le asignará el número 10
if ($cuenta == 0) {
$cuenta = 10;
}
Si no es igual a cero entonces escribirá en pantalla lo pedido:
else {
for $i ( 1 .. $cuenta ) {
print "$palabra $i...\n"; }
}
Y como siempre al final termina todo:
Ahora utilizaremos if para saber si existen archivos o no:
#!/usr/bin/perl -w
#test11.pl
if (-e "test2.pl") {
} else {
}
Lo mismo pero con variables:
#!/usr/bin/perl -w
#test12.pl
my ($archivo);
unless (@ARGV == 1) { die "uso: $0 [archivo]\n" } ($archivo) = @ARGV;
if (-e $archivo) {
print "$archivo si existe\n"; } else {
print "$archivo no existe\n"; }
Ahora que ya sabes un poco mas sobre scripts en Perl deverás practicar creando tus propios códigos cada ves más complejos o hasta donde esté tu conocimiento e imaginación.
En el próximo número publicaré un script que estoy creando, como averigüé sobre cada función y muchas otras cosas más como el uso de sockets y uso de comandos
system();.
Saludos y hasta la próxima. Att. WHK.
Puedes bajar el documento en formato odt en tar.gz
desde acá