Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Introducción A Perl

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 12

Introduccin a Perl

F. Javier Garca Castellano


Web: http://genura.ugr.es/~javi, Mail: javi@geneura.ugr.es

(C) GeNeura Team


Web: http://geneura.ugr.es, Mail: todos@geneura.ugr.es

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:

Programa simple en Linux: #!/bin/perl print "Hola Mundo\n";


Si estamos en windows sera:

Programa simple en Windows: #!c:/perl/bin/perl.exe print "Hola Mundo\n";


o incluso, si somos amantes del C, podra ser:

printf ("Hola Mundo\n");

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.

2.- Instalacin de Perl


Como es lgico, antes de empezar a ponernos a escribir programas de Perl como locos es necesario instalar o tener instalado el intrprete de Perl. Lo podemos encontrar en las siguientes direcciones:

En www.perl.com que es un buen sitio de referencia para empezar con Perl.

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:

tar xvfz perl_codigofuente.tar.gz


o si tiene extensin .tar.bz2 con:

tar xvfj perl_codigofuente.tar.bz2


y si tu sistema es un poco viejo con:

tar xvfI perl_codigofuente.tar.bz2


Si por casualidad tuviese la extensin .Z. Se tendra que hacer en dos pasos:

gzip -d perl_codigofuente.tar.Z tar xvf perl_codigofuente.tar

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:

./configure make make install


Con lo anterior, primero, se configura (si puede) para nuestro sistema, segundo, se compila el cdigo del intrprete y, tercero, se instala. 2.2.- Instalacin de Perl en Windows Para instalar Perl en Windows hay tambin dos opciones, la primera, que es la ms aconsejable, es obtener la ltima versin de Active Perl, que es la versin de Perl para Windows compilada por la compaa ActiveState. Para instalar esta versin, slo nos hace falta el Microsoft Installer, y una parche de las DCOM para windows 95, si ese es el sistema "operativo" que utilizamos. La otra opcin (menos recomendable) que tenemos es bajarnos el cdigo fuente de www.cpan.org, descomprimirla (hay versiones del tar, del gzip para windows en el CPAN) y compilarla. Para compilar el cdigo fuente, hace falta el Microsoft Visual C++ o Mingw32 con EGCS o GCC. Tambin nos har falta una utilidad make. MS Visual C++ viene con nmake, aunque tambin se puede usar dmake (una versin compilada con Mingw32). Se aconseja leer el fichero README.win32 (sobre todo si usas Mingw32). Una vez que se cumplen todos los requisitos, los pasos son:

nmake nmake test nmake install

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).

3.- Separacin de instrucciones y comentarios


3.1.- Separacin de intrucciones Como podemos ver en el programa de ejemplo aunque tenga una sla instruccin, para separar las instrucciones, como en la mayora de los lenguajes de programacin se utiliza el punto y coma (;). Esto que nos puede parecer obvio ser la fuente de las mayora de los errores que tengamos en nuestros programas en perl. Tiempo al tiempo. 3.2.- Comentarios Los comentarios en Perl sa hacen con el carcter de sostenido (#) y ocupan el resto de la lnea a partir de dicho carcter. A diferencia de otros lenguaje no se utilizan comentarios multilnea. Si el comentario aparece en la primera lnea (sin espacios) del programa seguido con el signo de admiracin(#!), despus tendremos que poner el PATH al intrprete de Perl. Como hemos visto en nuestro primer ejemplo para Linux y Windows.

1.- Datos escalares


Los datos escalares son las variables simples y pueden contener enteros, reales, cadenas o referencias. Este tipo de variables van precedido siempre por $. Esta es una de las mayores diferencias con lenguajes como el C y es que a cualquier variable escalar se le antepone dicho signo ($). La forma de nombrar las variables tambin es similar, se puede usar letras nmeros y _ empezando siempre por una letra. En Perl las variables no se tienen porque declarar, aunque se declaran con my. Adems la interpretacin del tipo de variable se hace en funcin del contenido, aunque todas la variables numricas internamente se tratan como reales.

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.

Asignacin y operadores aritmticos:

#!/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

menor o igual que <= mayor o igual que >=

En Perl tambin tenemos los operadores de autoincremento (++)y autodecremento (--). Y adems tenemos el operador potencia **(que es muy parecido aunque muy diferente)

Autoincremento y potencia: #!/usr/bin/perl #Asigno valores a variables my $contador=0; #Escribimos en pantalla

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;

$array3D[0][0][0]=20; print $array2D[1][1]." ".$array3D[0][0][0]."\n"; 3.- Arrays asociativos


Un array asociativo en Perl o tabla hash (como tambin se le denomina) es un array donde los elementos son referenciados mediante claves en vez de una posicin. Para los array asociativos se utiliza el smbolo %. Al igual que sucede con los arrays normales, cuando se accede a un elemento de un array asociativo se debe referenciar como un escalar con el smbolo $. Adems la indexacin por clave no se hace utilizando los corchetes, sino que se utilizan las llaves ({ }).

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:

%semana=("Lunes"=> "L", "Martes" => "M");


La funcin keys devuelve un array con las claves de un array asocitivo. La funcin values devuelve un array con los valores de un array asocitivo. Conexits($hash{clave}) podemos ver si una clave existe o no. Con delete($hash{clave}) se elimina un elemento de un array asocitivo.

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).

También podría gustarte