Sie sind auf Seite 1von 12

Historia de Perl

Como primer tema de sta parte vamos a ver un poco de los inicios de Perl, no va a ser muy extenso pues es algo trivial; simplemente para entender un poco sus comienzos. Puede parecer complejo, pero confa en nosotros, cuando entiendas lo bsico no es diferente a aprenderjuegos de poker o cmo conducir un coche - lo que se refiere a la prctica, y un alto nivel de pensamiento lgico. Muy bien, antes que nada el lenguaje se llama Perl, solamente la primera P se pone en capitulares. Tradicionalmente el programa que ejecuta los scripts de Perl se llama perl, todo en minsculas. Esto nos servir para ms adelante diferenciar entre el lenguaje y el programa. El lenguaje Perl toma su nombre de Practical Extraction and Report Language y fue ideado por Larry Wall. La primera versin sale en el ao de 1987. Originalmente Larry Wall lo describe como un excelente lenguaje optimizado para leer archivos de texto, extraer informacin de esos archivos y crear reportes basados en esa informacin, combinando lo mejor de C, sed, awk y sh. Para los que conocen alguno de los lenguajes y herramientas antes mencionados, se podrn dar cuenta que la sintxis del lenguaje es muy similar y no tendrn mucho problema en adoptarlo. Perl se considera un lenguaje interpretado, es decir, no es necesaria una previa compilacin para poder ejecutarse, lo nico que se necesita es darle al interprete, perl, el cdigo que queremos que ejecute. Desde sus inicios Perl ha avanzado mucho y ahora se encuentra en la versin 5 con la versin 6 en pleno desarrollo. Cabe mencionar que Perl hoy en da es usado para una gran variedad de cosas, desde avanzados programas de seguridad hasta sencillos CGIs para administrar formularios. Uno de los fuertes de Perl es la existencia de CPAN, un directorio de mdulos que podemos integrar a nuestros scripts para facilitarnos la vida. CPAN es definitivamente uno de los conos representativos de Perl, otros lenguajes (proyectos) han querido implementar algo similar, pero han fallado. Perl lleva a CPAN desde su nacimiento. La filosofa comunitaria de Perl ha hecho de CPAN lo que es ahora, es el centro de distribucin comunitario de paquetes que ningn otro lenguaje ha tenido. Sin duda, CPAN representa todo el trabajo que la comunidad de Perl ofrece, y que a su vez, es una excelente manera de contribuir con algo.

LAS VARIABLES
ste es nuestro primer tema, y en l vamos a hablar de la pieza fundamental de cualquier lenguaje de programacin: las variables. Qu es una variable? Una variable como bien dice su nombre es algo que puede "variar". Al nosotros hacer un script no tenemos manera de saber toda la informacin que vamos a tener, ya sean resultados de sumas, entradas de datos, etc. Para ello usamos las variables, para almacenar todos esos datos. En Perl hay varios tipos de variables, y les vamos a hechar un vistazo a las mismas: Las Escalares ($variable)

En Perl la variable bsica es la escalar. sta variable puede contener cualquier tipo de informacin ya sean nmeros, letras, cadenas de texto, signos, cdigo ASCII, etc, as como cosas ms avanzadas como referencias que veremos ms adelante. Para definir una variable escalar todo lo que tenemos que hacer es: $variable El smbolo $ se usa para identificar a nuestra variable, y despus podemos usar el nombre que queramos. Para nombrar nuestras variables debemos de seguir algunas de reglas:

Nuestras variables nicamente pueden nombrarse con valores alfanmericos. El nombre de nuestras variables son sensibles al uso de maysculas y minsculas, esto significa que las variables $variable y $Variable son dos variables distintas. Las variables NO puden comenzar con nmeros, solamente letras o _, ya despus se puede usar cualquier cracter alfanmerico Al definir nuestra variables es buen hbito usar el keyword "my"

Muy bien, ahora veamos como podemos definir una variable e iniciarla con un valor: my $numero = 10; Tambin podemos definirla primero, y despus inicializarla: my $numero; $numero = 10; En ambos casos nuestra variable terminar con el valor "10". Podemos asignar el valor de una variable a otra, por ejemplo:

1 2 3 4 5 6 7

my $variableA = "Mi Variable"; my $variableB = $variableA; my $variableC; $variableC = $variableA;

En la lnea 1 definimos e inicializamos la variable $variableA con el valor "Mi Variable". Luego en la lnea 3 definimos e inicializamos la variable $variableB con el valor de $variableA, de sta manera ambas variable tendrn el mismo valor. Y en las lneas 5 y 7, definimos la variable, e inicializamos la variable en dos pasos distintos. En este momento podremos ver que cada lnea de cdigo de Perl debe de acabar con un ; Los Arrays (@array) Los arrays o arreglos como se les llama comnmente en espaol no son exactamente vectores, ms que nada se les puede definir como una lista de cosas, stas cosas pueden ser nmeros, letras, palabras o hasta variables. Este tipo de variable es un punto sumamente fuerte de Perl y que te vers usando ms de una vez en tus scripts. Nuestro array se define de la siguiente manera: my @array; Vemos que debemos de usar el smbolo @ para definir nuestros arrays. Como los arrays son listas de cosas, es diferente la manera en que los inicializamos:

my @array = ('Perro','Gato','Gallina','Pez'); Aqu definimos e inicializamos nuestra variable, para definir la lista con la que queremos inicializar a nuestro array, ponemos todos los elementos de la lista entre parntesis y separando cada elemento por una coma. Aqu como cada elemento de la lista es una cadena de texto, por eso los ponemos entre comillas sencillas, aunque tambin podran ser comillas dobles. La separacin es por comas, as que no importa la cantidad de espacios que haya entre cada elemento, a continuacin pongo un ejemplo:

1 2 3 4 5 6

my @array = ( 'Perro', 'Gato', 'Gallina', 'Pez' );

Ya que tenemos una lista de "cosas" cargadas dentro de nuestro array, ahora debemos de poder tomar alguno de estos elementos. A cada elemento dentro de nuestra lista le corresponde un nmero, basado en su posicin dentro de la lista, lo hay que tener en mente, es que Perl empieza a contar los elementos desde 0 NO desde 1. Por lo que en nuestro array con la lista de animales, el elemento 0 sera "Perro" y el elemento 1 sera "Gato", as sucesivamente. Para tomar algn elemento de nuestra lista debemos de usar la siguiente sintxis: $array[<num_elemento>]; En donde <num_elemento> es un nmero que corresponde al elemento que queremos tomar, veamos un ejemplo

1 my @array = ('Perro','Gato','Gallina','Pez'); 2 3 my $animal = $array[3];


En la lnea 1 definimos e inicializamos nuestro array, en la lnea 3 asignamos el elemento 3 de nuestro array a la variable $animal. Sabes cul ser el valor de nuestra variable $animal? Si pensaste "Pez" ests en lo correcto. Los hashes (%hash) La variable hash o arreglo asociativo es un tipo de variable sumamente especial en Perl, ya que pocos lenguajes cuentan con variables de este tipo. El hash es un tipo de lista por medio de la cual podemos llamar a sus valores con el uso de llaves. As dependiendo de la llave que se llame ser el valor que se retorne. Entenderemos esto ms a fondo ahora que veamos unos ejemplos. El hash se define de la siguiente manera: my %hash; Vemos que el smbolo para diferenciar a las variables de tipo hash es el smbolo %. Ahora, como se explic nuestro hash es una lista que corresponden a llaves y valores, los hashes los podemos inicializar de dos maneras distintas: my %hash = ('Uno','One','Dos','Two','Tres','Three'); Parece similar a una array pero hay una gran diferencia, pues realmente lo que ve Perl es lo siguiente:

Uno

=> One

2 3

Dos => Two Tres => Three

Va tomando de dos en dos los elementos, el primer elemento de cada par lo toma como llave, y el segundo elemento como su valor. Por qu se dicen "llaves"? Es debido a que funciona como una llave real, con una llave solamente podemos abrir una puerta, de sta manera con una llave solamente podremos adquirir un valor. Para llamar el valor de una de nuestras llaves la sintxis es: $hash{<nombre_llave>}; En donde es el nombre de

la llave de la cual queremos el valor. Entonces, tomando el hash que tenemos de ejemplo, podemos adquirir el valor de la llave Uno de la siguiente manera:
$hash{'Uno'};

Expliqu que hay dos maneras de inicializar nuestros hashes, y ahora les voy a mostrar la segunda manera. sta sintxis en lo personal me parece mucho ms clara, y les recomiendo que la usen:
1 2 3 4 5 6 my %Animales = ( 'Perro' 'Gato' 'Gallina' 'Pez' ); => => => => 'Dog', 'Cat', 'Chicken', 'Fish'

Vemos como cada par llave-valor es separado por comas, ahora, dentro del par llavevalor se usa la siguiente sintxis:
<LLAVE> => <VALOR>

En dnde <LLAVE> es el nombre de la llave, y <VALOR> el valor de la misma. Entonces siguiendo con ste hash de ejemplo, dgamos que queremos saber como se dice "Gallina" en ingls, podramos entonces hacer lo siguiente:
my $gallina_ingles = $Animales{'Gallina'};

Al pedir el valor de la llave "Gallina" nos d como resultado "Chicken". Ahora, que pasa si hacemos lo siguiente:
my $variable = $Animales{'Pez'};

Cul ser el valor de $variable? Si pensaste en "Fish" ests en lo correcto. Muy bien, por qu cuando llamamos a los valores de nuestro array o hash usamos el smbolo $ en vez del @ %? La razn de esto es que si podemos ver bien, los arrays y los hashes almacenan variables escalares, entendemos como variable escalar todo aquello que sea un nmero, una cracter, una cadena de texto, etc. Entonces cuando pedimos algn elemento de nuestro hash o array, estamos pidiendo un valor escalar, es por ello que usamos el
$array[<elemento>] $hash{<llave>};

Muy bien, ahora voy a enlistar los tipos de variables que faltan. stas variables no se van a explicar, pues para entenderlas tendramos que ver temas ms avanzados que se vern en el futuro.

Los FILEHANDLES Con este tipo de variable podemos hacer llamadas a archivos desde Perl. stas variables las conoceremos en el tutorial intermedio cuando aprendamos a leer y manipular archivos. Los DIRHANDLES sta variable se usa cuando hacemos lectura de un directorio, de igual manera lo veremos hasta el tutorial intermedio. Los Typeglobs Un typeglob es una entrada a la tabla de smbolos de Perl, por lo que con un typeglob podemos llamar a todos los tipos de variables de Perl.

OPERADORES DE PERL
Los operadores son instrucciones que se le da a la computadora para efectuar sobre operandos. Los operandos pueden ser desde nmeros hasta palabras. Perl es uno de los lenguajes que existen con ms operadores, y aqu vamos a enlistar todos los que tiene. Podrs ver que los operadores son bastante intuitivos, antes de que se d la explicacin podrs saber la funcin que realiza el operador. Operadores Aritmticos Son los operadores ms comnes e incluyen suma, resta, multiplicacin, exponenciacin, divisin y mdulo.
op1 op1 op1 op1 op1 op1 + op2 - op2 * op2 ** op2 / op2 % op2 Suma Resta Multiplicacin Exponenciacin Divisin Mdulo

Todos los operadores aritmticos son bastante intuitivos y no vale la pena profundizar sobre ello, quiz solamente destacar que el operador de mdulo retornar el residuo de un divisin. Por ejemplo en la operacin 9%7 el resultado ser 2, ya que 9/7 es igual a 1 con residuo de 2. Veamos unos ejemplos prcticos del uso de estos operadores:
1 2 3 4 5 6 my $a = 10; my $b = 15; my $c = $b - $a; my $d = $a * $b; #$c tiene valor de 5

Dentro del ejemplo, podrn ver que en la lnea 3 hay un texto que viene en verde. Simplemente les comento que eso es un comentario. Un comentario es un texto al cual perl no le d importancia y lo ignora por completo. Todos los comentarios de Perl inician con el smbolo de nmero o gato #. Operadores Aritmticos Unitarios Los operadores unitarios actan sobre un solo operando y bsicamente se usan para cambiar el signo de un valor, incrementar el valor o disminuir el valor.
+op1 -op1 Convierte el operando a positivo Convierte el operando en negativo

++op1 Pre-incremento del operando en uno --op Pre-disminucin del operando en uno op1++ Post-incremento del operando en uno op1-- Post-decremento del operando en uno

Si vemos la tabla podremos apreciar que hay pre-operaciones y post-operaciones, ambas realizan los mismo, incrementar o disminuir en una unidad el valor del operando, sin embargo el momento en que lo realizan es diferente. Las pre-operaciones primero cambian el valor del operando y despus lo retornan, por ejemplo:
1 2 3 my $var = 10; my $var1 = $var++;

En ste caso al terminar de ejecutar tendremos a $var con un valor de 11 y a $var1 con un valor de 10. Esto es porque debido a que usamos el post-incremento, primero se asigna el valor a $var1 y despus se realiza el incremento de $var. Si usaramos el pre-incremento, ambas variables terminaran con lo mismo valor. Operadores Lgicos Los operadores lgicos normalmente los vamos a usar siempre que querramos controlar el flujo de nuestro programa, ms adelante que veamos los Enunciados de Control veremos como.
1 2 3 op1 && op2 op1 || op2 !op1 Operacin AND Operacin OR Operacin NOT

En s es sencillo comprender que es un operador lgico, el programa va a realizar una desicin en base a dos operandos cuya condicin puede retornar verdadero o falso. Si en algn momento hemos tomado la materia de lgica en la escuela se nos ser muy fcil comprender estos operadores. A continuacin viene una tabla de resultados de los operadores, en la prmera columna viene el valor del operando1, en la segunda columna del operando2, y en la tercera y ltima columna el resultado en Verdadero o Falso.

RESULTADO && OP1 OP2 0 0 1 0 0 1 1 1 RESULTADO || OP1 OP2 0 0 1 0 0 1 1 1 RESULTADO ! OP1 !OP1 0 1 1 0

OP1 && OP2 0 0 0 1

OP1 || OP2 0 1 1 1

Operadores a Nvel bit A continuacin viene el listado de cada operador junto con su breve descripcin. Cabe destactar que estos operadores solamente funcionan con BITS. op1 & op2 Este operador AND compara dos bits y retorna un resultado de 1 si ambos bits son 1, de lo contrario regresa 0. op1 | op2 El operador OR compara dos bits y retorna un resultado de 1 si los bits son complementarios, de lo contrario regresa 0. op1 ^ op2 El operador OR EXCLUSIVO compara dos bits y retorna un resultado de 1 si alguno o ambos bits son 1, de lo contrario retorna 0. -op1 Este operador se usa para invertir todos los bits del operando. op1 >> op2 El operador de DESPLAZAMIENTO A LA DERECHA mueve todos los bits a la derecha, se deshace del bit de la extrema derecha y asigna 0 al bit de la extrema izquierda, esto hace que cada movimiento divida a op1 a la mitad. op1 << op2 El operador de DESPLAZAMIENTO A LA IZQUIERDA mueve todos los bits a la izquierda, se deshace del bit de la extrema izquierda y asigna 0 al bit de la extrema derecha, esto hace que cada movimiento multiplique a op1 en 2. Operadores Relacionales Numricos Estos operadores se usan para verificar la relacin que hay entre dos operadores nmericos. Ya sea igualdad, mayor o menor, etc op1 == op2 Este operador retornar verdadero si ambos operadores son verdaderos. Por ejemplo, lo siguiente es verdadero: 7 == 7

op1 != op2 La contraparte del operador anterior, esto regresar verdadero si los operadores no son iguales. Por ejemplo, lo siguiente retornar verdadero: 6 != 7 op1 < op2 El operador retornar verdadero si op1 es menor a op2. Por ejemplo 2 < 6 es verdadero. op1 <= op2 El operador retornar verdadero si op1 es menor o igual a op2. Por ejemplo 4 <= 4 y 4 <= 5 son verdaderos. op1 > op2 El operador retornar verdadero si op1 es mayor a op2. Por ejemplo 6 > 5 es verdadero. op1 >= op2 El operador retornar verdadero si op1 es mayor o igual a op2. Por ejemplo 8 >= 8 y 8 >= 4 son verdaderos. op1 <==> op2 Este operador es algo diferente pues en vez de dos posible retornos, tiene 3. El operador retorna 1 si op1 es mayor a op2, 0 si op1 es igual a op2, y -1 si op1 es menor a op2. Operadores Relacionales de Cadena Estos operadores se usan para verificar la relacin entre dos operandos de cadena, los operandos de cadena se consideran aquellos que NO son nmericos. op1 eq op2 El operador retornar verdadero si op1 es igual a op2. Por ejemplo "c" eq "c" es verdadero. op1 ne op2 El operador retonar verdadero si op1 no es igual a op2. Por ejemplo "a" ne "b" es verdadero. op1 lt op2 El operador retornar verdadero si op1 es menor a op2. Por ejemplo "a" lt "b" es verdadero. op1 le op2 El operador retornar verdadero si op1 es menor o igual a op2. Por ejemplo "a" le "b" y "a" le "a" son verdaderos. op1 gt op2 El operador retornar verdadero si op1 es mayor a op2. Por ejemplo "z" gt "a" es verdadero. op1 ge op2 El operador retornar verdadero si op1 es mayor o igual a op2. Por ejemplo "z" ge "y" y "z" ge "z" son verdaderos.

op1 cmp op2 El operador tiene tres posible retornos. 1 si op1 es mayor a op2, 0 si op1 es igual a op2 y -1 si op1 es menor a op2. Operador Ternario El operador ternario es sumamente til en Perl y realmente es una secuencia de operadores, su sintxis es como sigue:
CONDICION ? PARTE-VERDADERA : PARTE-FALSA

Lo que te permite el operador es evaluar la CONDICION y dependiendo de si es verdadera o falsa se regresar la parte que corresponda. Esto se podr comprender ms con un ejemplo:
my $num = 10; my $var1 = ($num > 5) ? "Mayor" : "Menor";

Lo que estamos haciendo es realizando una asignacin a la variable $var1 dependiendo de la condicin. En este caso la condicin es ($num > 5), si esto resulta verdadero, la palabra Mayor se asignar a la variable, de lo contrario ser la palabra Menor. Este operador se podr comprender ms a fondo cuando veamos los enunciados de control en la siguiente parte del tutorial. Operador de Rango (..) El operador de rango nos resulta sumamente til cuando queremos crear arrays con valores contiguos. Por ejemplo, dgamos que queremos crear un array con los nmeros del 1 al 10, uno estara tentado a hacerlo de la siguiente manera:
my @array = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

NOTA: Vemos como no usamos comillas para los valores en este caso debido a que los elementos son nmeros NO cadenas de texto Esto resulta sumamente imprctico, y ms si queremos asignar mucho ms nmeros. Pero esto es posible comprimirlo usando el operador de rango:
my @array = (1..10);

Ahora tendremos nuestro array con la lista de nmeros del 1 al 10. Pero aparte el operador es inteligente, entonces si hacemos algo as:
my @array = (01..10);

Nuestro array contendr correctamente los valores 01,02,03,04,05,06,07,08,09,10. Ahora veamos que pasa si usamos letras:
my @array = ('a'..'e');

El resultado es justo como lo queremos a,b,c,d,e. Pongamos ahora en prueba a Perl, te puedes imaginar los valores que resultaran de lo siguiente?:

my @array = ('aa'..'af');

Los valores seran aa,ab,ac,ad,ae,af. Operador de Concatenacin Muchas veces no queremos sumar ni restar, o realizar ninguna operacin entre dos operandos, sino que queremos "pegarlos''. Para eso tenemos el operador de concatenacin. Este operador es un simple punto . y funciona de la siguiente manera:
1 2 3 4 my $saludo = "Hola me llamo "; my $nombre = "Uriel"; my $frase = $saludo . $nombre;

Como resultado nuestra variable $frase tendr el valor "Hola me llamo Uriel". Pero, que pasa si combinamos nmeros con cadenas:
my $edad = "Tengo " . 21 . " aos".

Como resultado en la variable $edad tendremos el valor "Tengo 21 aos", pues Perl realiza la conversin del nmero 21 a una cadena detrs de las cortinas de manera automtica. Operador de Repeticin Este operador lo usamos para duplicar una cadena n nmero de veces. El operador se define con una x, por ejemplo:
my $var = "A" x 6;

Esto genera el valor AAAAAA. Operadores de Asignacin A travs de todo el tutorial hemos estado usando el operador de asignacin bsico =. Ahora veremos que hay ms maneras de asignar un valor a una variable. Por ejemplo, dgamos que tenemos algo as:
1 2 3 4 my $var = 1; my $num = 20; $var = $var + $num;

Al final obtendremos el valor 21 en nuestra variable $var, pero esto se ve demasiado repetitivo y tedioso, y pues como siempre, Perl tiene una manera ms simple de realizar las cosas, pues esto lo podramos lograr ms sencillamente usando alguno de los operadores de asignacin.
$var += $num;

Vemos como estamos usando un diferente operador de asignacin +=. Este operador lo que hace es sumar el valor de la derecha a nuestra variable de la izquierda. Hechemos una vistazo a otro ejemplo para entender un poco ms. Lo ms seguro es que sepas el valor final de nuestra variable con solo verlo, pues Perl es muy intuitivo:

my $num = 5; $num -= 4;

Puedes suponer que valor tendr $num? Si dijiste 1 ests en lo correcto. Aqu est la lista de todos los operadores de asignacin disponibles:
var var var var var var var var var var var var var var = op1; += op1; -= op1; *= op1; /= op1; %= op1; .= op1; **= op1; x= op1; <<= op1; >>= op1; &= op1; |= op1; ^= op1;

Orden de Precedencia Muchas veces nos encontraremos usando varios operadores en una misma expresin.
my $var = 10 + 5 * 4 / 2;

Si esto sucede, qu operadores se ejecutan primero? Para esto Perl tiene un orden de precedencia, es un orden establecido en donde podemos ver que operadores se ejecutan primero y cuales al final. Es sumamente importante que tengamos siempre presente esto o si no nos encontraremos con resultados innesperados. Aqu va una tabla con los operadores ms usados ordenados por precedencia:
(), [], {} ++,-** *,/,%,x +,-,. && || .. = LLamadas a funciones, parntesis Incremento y decremento Exponenciacin Multiplicacin,divisin,mdulo,repeticin Suma, resta, concatenacin de cadena AND lgico OR lgico Operador de rango Operadores de asignacin

Cabe destacar que la tabla para nada est completa, faltan muchos operadores, los cuales se podrn ver en la documentacin de Perl. Simplemente se enlistaron los ms comnes. Viendo la tabla te podras imaginar el resultado de la siguiente operacin?:
my $num = 10 + 4 / 2;

Si dijiste que 7 ests incorrecto, el resultado ser 12. La razn de esto es que si vemos la tabla de precedencia podremos ver que la divisin tiene ms precedencia que la suma,

por lo que la primera operacin que se realiza es es 4/2, por lo que despus se realiza 10+2. Pero qu pasa si queremos que se ejecute la suma primero? Para eso nos sirven los parntesis que tienen la mayor precedencia:
my $num = (10 + 4) / 2;

Ahora s, como los parntesis ocupan el primer lugar de precedencia lo primero que se ejecuta es 10+4 y despus 14/7. Realmente es sencillo, solamente hay que recordar en todo momento los nveles de precedencia, y SIEMPRE que haya alguna duda, usa los parntesis. As finalizamos con los operadores. Podrn pensar que es demasiada informacin, pero como dije al principio, son bastante intuitivos, se terminarn acostumbrando a ellos, pues junto con las variables, esto es lo ms bsico de Perl. As termina la primera sesin del tutorial Perl Bsico.

Das könnte Ihnen auch gefallen