Introducción A Perl
Introducción A Perl
Introducción A Perl
1.- Introduccin
Perl fue creado por Larry Wall para simplificar tareas de administracin de un sistema Unix, aunque hoy en da se ha convertido en una de las mejores herramientas para creacin de scripts o de construccin de sitios Web. Perl es un lenguaje rpido pese a ser interpretado, multiplataforma y dispone de una gran cantidad de bibliotecas para el desarrollo de casi cualquier tipo de aplicacin. Es software libre, no hay que pagarlo. El ejemplo ms sencillo de un programa en Perl, sera en Linux:
Ahora, cogemos el anterior programa y lo guardamos en un fichero con extensin .pl que es la extensin de los scripts en Perl. Para ejecutarlo, basta con llamarlo por su nombre (si se tiene los permisos de ejecucin adecuados):
./hola.pl
Como se puede deducir, con la primera lnea indicamos donde est el intrprete de Perl, despus de #!. Esto no hara falta si, al ejecutar el script, lo hacemos usando el intrprete. Por ejemplo:
/usr/bin/perl hola.pl
o
c:\perl\bin\perl.exe hola.pl
Tambin se puede imaginar que con la segunda lnea se escribe el mensaje Hola Mundo.
En el CPAN que el sitio ms completo de recursos de Perl En ActiveState si lo que usamos es Windows en sus diferentes variantes
2.1.- Instalacin de Perl en Linux Hoy en da todas las distribuciones incluyen casi de serie un intrprete de Perl, es decir, el intrprete de Perl se instala casi por defecto (muy mnima debera ser las
instalacin para que no se incluyera o quitarlo a propsito). Debido a la caracterstica que antes apuntabmos de su utilidad para realizar tareas de administracin del sistema. Para instalar Perl (o instalar una versin actualizada), lo primero que hay que decidir es si instalar una versin compilada (binaria) o compilar nosotros mismos. Ambas cosas (fuentes o binarios) se pueden encontrar en www.cpan.org para multitud de Sistemas Unix ( y otros no Unix). Si te bajas una versin compilada y especfica para tu sistema, simplemente ejecutas el binario que te bajes (descomprimindolo si estuviera comprimido) o instlandolo con rpm -Uhv perl_compilado.rpm si es un fichero rpm. El nico problema que te puedes encontrar es que te haga falta alguna librera, y ah es donde se complican las cosas, tambin tendrs que instalarla. Si optas por bajarte el cdigo fuente agrupado en un fichero tar.gz (o .tgz), lo primero que tienes que hacer es descomprimirlo. Con:
Una vez descomprimidos el cdigo fuente de Perl, lo aconsejable es leer los ficheros README e INSTALL, por lo que pudiera pasar o por lo que nos pudiera faltar. Una vez llegados a este lo pasos a seguir son los mismos que compilar casi cualquier aplicacin en Linux:
Hay que tener en cuenta que la versin de Perl para Windows 95 la funcionalidad no es completa en algunos mdulos (en el resto de sabores de windows va bien: 98,Me,NT200,XP).
Programilla con variables: #!/usr/bin/perl #Declaro una variable my $hola; #Asigno valores $hola="Hola Mundo\n"; $adios="adios\n"; #Escribimos un poco en pantalla print $hola; $hola=23; print "Mira un nmero: $hola \n"; print "Y $adios";
Como podemos ver en el anterior ejemplo las cadenas se encierran entre comillas dobles (" "), aunque tambin se pueden cerrar entre comillas simples (' '). Hay caracteres especiales (retorno de carro, tabulador, etc.) que como en muchos otros lenguajes se presentan mediante la barra de escape:
\n retorno de carro a una nueva lnea \b retorno a la posicin anterior \a pitido \t tabulacin (8 espacios) \\ el caracter \ \" las comillas dobles (aunque si la cadena est delimita por comillas simples, no hace falta) \' las comillas simples (aunque si la cadena est delimita por comillas dobles, no hace falta)
Operadores de datos escalares El operador de asignacin se utiliza, igual que en C, el smbolo =, como se puede obervar en el primer ejemplo de la pgina. Tambin se pueden mezclar operadores arimticos junto con la asignacin.
#!/usr/bin/perl #Asigno valores a variables my $uno=123.67; $dos=123123.2334; $suma=$uno; $suma+=$dos; #Escribimos resultados en pantalla print "La suma de $uno y $dos es = $suma \n";
Los operadores de comparacin, son similares a los de C, pero depende si estamos comparando cadenas o datos numricos. Los operadores para nmeros y para cadenas son: Comparacin igual no igual menor que mayor que Nmeros Cadenas == != < > eq ne lt gt le ge
En Perl tambin tenemos los operadores de autoincremento (++)y autodecremento (--). Y adems tenemos el operador potencia **(que es muy parecido aunque muy diferente)
print "Se contar:", $contador++ , ", ", $contador ++,"...\n"; print "2 elevado a $contador es:", (2**$contador), "\n";
Para concatenar cadenas tenemos el operador punto (.) y la funcin chop para quitar el ltimo caracter a una cadena.
Concatenar y chop: #!/usr/bin/perl #Asigno valores a variables my $cad1="Hola"; my $cad2="Mundo"; my $cad3=$cad1." ".$cad2; #Metemos una nueva lnea y un caracter raro en $cad3 $cad3=$cad3."\n="; #Y le quitamos el caracter raro chop($cad3); #Escribimos en pantalla print $cad3; 2.- Arrays
Un Array en Perl es como los de C, pero con la diferencia de que van precedidos del smbolo arroba @. (como las variables de $). La forma de acceder a ellos es mediante la indexacin, contando desde cero. En Perl no nos tenemos que preocupar de reservar la memoria ni gestionarla de ninguna forma. Hay que tener en cuenta que cuando se accede a un elemento de un array, ya no se est haciendo referencia a un array sino a un dato escalar, por lo que debe ir precedido del smbolo $. Vamos a verlo con un ejemplo:
Ejemplo de Arrays: #!/usr/bin/perl #Declaramos la variable primer_array como un array my @primer_array; #asignamos unos cuatro valores al array @primer_array=(1,"dos",3,"cuatro"); #Aadimos un quinto de forma individual $primer_array[4]=5.5; #Mostramos el tercer elemento del array print "El tercero es= ".$primer_array[3]." \n";
Para sacar/insertar elementos se pueden usar las funciones pop y push. Que sacan o insertan, respectivamente, un elemento al final, es decir, tratan el array como una pila. Tambin podemos utilizar shift y unshift para sacar o insertar, respectivamente, un elemnto del principio del array. Para ver el tamao (nmero de elementos) de un array se utiliza el smbolo de sostenido (#) entre el smbolo $ y el nombre del array, es decir, con $#array. Este tamao nos lo da contando desde 0 o, lo que es lo mismo, realmente nos da el ltimo ndice que existe en el array. Si el array no tuviese ningn elemento, su tamao sera -1.
Ejemplo de pop/push, shift/unshift, y tamao del array: #!/usr/bin/perl #asignamos unos cuatro valores al array @matriz=(1,"dos",3,"cuatro"); #Aadimos con Push
push(@matriz, 5, 6, "siete"); #Mostramos el ltimo elemento print "El ltimo es ". $matriz[$#matriz]."\n"; #sacamos con Pop $uno=pop(@matriz); print "He sacado $uno\n"; #Aadimos con unshift unshift(@matriz, "cero", -1 ); #Mostramos el primer elemento print "El primero es ". $matriz[0]."\n"; #sacamos con shift $uno=shift(@matriz); print "He sacado $uno\n"; print "La matriz tiene ".$#matriz." elementos\n";
En todo script de Perl existe el array @ARGV que contiene los parmetros de entrada. Para aadir dimensiones a los arrays, simplemente se aaden corchetes. Como en el siguiente ejemplo:
Ejemplo arrays con ms de una dimensin #!/usr/bin/perl my @array3D=([],[],[]); $array2D[0][0]=0; $array2D[0][1]=1; $array2D[1][0]=2; $array2D[1][1]=3;
Ejemplo de utilizacin de arrays asocitivos: #!/usr/bin/perl #asignamos valores a una tabla hash my %colorfruta; $colorfruta{"verde"}="kiwi"; $colorfruta{"amarillo"}="platano"; $colorfruta{"rojo"}="sanda"; $colorfruta{"naranja"}="naranja"; print "Una fruta verde es: ".$colorfruta{"verde"}."\n";
%dias=("lunes",L,"martes",M,"miercoles",X, "jueves",J,"viernes",V,"sabado",S,"domingo ",D); print "La representacin del Martes es :". $dias{"martes"}." \n";
La asociacin tambin se puede hacer con =>, por ejemplo:
4. Ejercicios
Ejercicio: Coge el primer ejemplo de esta pgina (Programilla con variables) y cambia las cadenas que aparecen, de forma que se usen las comillas simples, en lugar de las comillas dobles. Qu diferencia hay?. Ejercicio: Compara dos enteros y dos cadenas y guarda el resultado en variables. Muestralas por pantalla. Qu sale cuando son iguales?, Y cuando son diferentes?. Ejercicio: Cuenta los parmetros de un script en Perl y muestralo por pantalla. Muestra tambin el primer y ltimo parmetro del script. Ejercicio: Inicializa un array asociativo y muestra la segunda clave. (Nota: Usa la funcin keys).