Post on 14-Oct-2014
description
Índice de contenido1. Introducción a Perl.................................................................................................................................3
1. Qué es Perl........................................................................................................................................3 2. Instalación de Perl............................................................................................................................3 3. Instalación de epicid para eclipse....................................................................................................4
Ejercicio..................................................................................................................................4 4. Conocer la versión de Perl instalada.................................................................................................4
2. Mi primer programa...............................................................................................................................5 1. El hola mundo...................................................................................................................................5 2. Separación de instrucciones.............................................................................................................6 3. Comentarios.....................................................................................................................................6
Ejercicios.................................................................................................................................7 4. Diferencia entre comillas simples y dobles......................................................................................7
Ejercicio..................................................................................................................................7 5. Los tipos de datos básicos................................................................................................................7
3. Variables.................................................................................................................................................9 1. Alcance de las variables y espacio de nombres................................................................................9
Ejercicio.................................................................................................................................104. Operadores............................................................................................................................................11
Ejercicio.................................................................................................................................125. Las representaciones de datos .............................................................................................................13
1. Escalares.........................................................................................................................................13Ejercicio.................................................................................................................................13
2. Arrays.............................................................................................................................................13Ejercicios...............................................................................................................................14
3. Operaciones sobre los arrays..........................................................................................................14Ejercicios...............................................................................................................................14
4. Arrays asociativos...........................................................................................................................15Ejercicios...............................................................................................................................15
6. Estructuras de control...........................................................................................................................16 1. Instrucciones if, else, elsif...............................................................................................................16 2. Instrucción unless...........................................................................................................................17
Ejercicios...............................................................................................................................17 3. Instrucción while............................................................................................................................17 4. Instrucción until..............................................................................................................................18 5. Instrucción for.................................................................................................................................18 6. Instrucción foreach.........................................................................................................................19 7. Instrucción last................................................................................................................................19 8. Instrucción next..............................................................................................................................19
Ejercicios...............................................................................................................................20Bibliografía..............................................................................................................................................22
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
1. Introducción a Perl
1. Qué es Perl"Perl es un lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del lenguaje C, del lenguaje interpretado shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación. Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y por no tener ninguna de las limitaciones de los otros lenguajes de script." (http://es.wikipedia.org/wiki/Perl). Perl es un lenguaje de programación interpretado, es por ello que cuando queremos ejecutar un script Perl, debemos llamar al interprete, que en distribuciones linux basadas en debian se encuentra en /usr/bin/perl.
Perl es un lenguaje de propósito general originalmente desarrollado para la manipulación de texto y que ahora es utilizado para un amplio rango de tareas incluyendo administración de sistemas, desarrollo web, programación en red, desarrollo de GUI y más.
Se previó que fuera práctico (facilidad de uso, eficiente, completo) en lugar de hermoso (pequeño, elegante, mínimo). Sus principales características son que es fácil de usar, soporta tanto la programación estructurada como la programación orientada a objetos y la programación funcional, tiene incorporado un poderoso sistema de procesamiento de texto y una enorme colección de módulos disponibles.
2. Instalación de PerlSi estas trabajando en linux, la mayoría de las distribuciones ya tienen instalado Perl. Sin embargo, suponiendo el caso de que no esté instalado, lo que se debe hacer es averiguar cual es el paquete para nuestra distribución y proceder a instalarlo.
Para verificar si tenemos a Perl instalado podríamos ejecutar el siguiente comando en una consola: $ whereis perl. En el caso de estar instalado el la consola nos devolverá la ruta donde éste se encuentra, en mi caso fue: /usr/bin/perl .
Si deseamos actualizar la versión ya instalada, o estamos en un sistema operativo diferente de linux, lo mejor es seguir las instrucciones que se encuentran en la página de Perl (http://www.perl.com). Allí encontraremos links para la documentación, links de descargas, etc.
También podemos ir a la página del CPAN, donde podremos encontrar información de módulos, scripts, la FAQ entre otros. Si van a trabajar bajo windows recomendaría que visiten http://www.activestate.com/ y se posicionen en la pestaña de Perl.
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
3. Instalación de epicid para eclipse
Existen diversos IDEs (Integrated Development Environment o entorno de desarrollo integrado) para desarrollar en Perl. Aquí puede encontrar información acerca de IDEs para Perl. Existe un IDE que se llama Geany, es un editor bastante liviano e interesante. En mi caso, he decidido desarrollar con eclipse y el plugin para Perl epicide (http://www.epicide.org). Para descargarlo podemos ir directamente a la página de descargas. Para aprender a configurarlo y utilizarlo podemos acceder a la documentación que se encuentra aquí.
• Ejercicio
1. Guiado por el instructor instale eclipse y el plugin para desarrollar en Perl.
4. Conocer la versión de Perl instalada
Para visualizar la versión de Perl que tenemos instalada basta con abrir una consola de terminal y proceder a escribir lo siguiente: $ perl v . La consola mostrará la versión junto con información adicional importante.
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
2. Mi primer programa
1. El hola mundoUna vez confirmado que Perl se encuentra instalado en nuestra computadora, es hora de realizar nuestro primer programa en Perl.
Para ello necesitamos un editor de texto, el que más nos guste (gedit, Geany, Padre, plugin de Perl para Eclipse EPIC) y una consola de terminal abierta para ejecutar el programa.
Abrimos el editor de texto, y escribimos lo siguiente:
#!/usr/bin/perlprint 'Hola mundo ';
También podemos imprimir con salto de línea de la siguiente forma:
#!/usr/bin/perlprint "Hola mundo \n";
La linea 1 indica la ruta donde se encuentra el interprete de Perl, en mi caso está en /usr/bin/perl. La linea 2 contiene una instrucción que permite imprimir datos en la pantalla con la palabra reservada print.
Para ingresar una entrada desde el teclado lo hacemos con <STDIN> y le asignamos la entrada a una variable. En el próximo punto veremos qué es una variable y cómo trabajar con ellas, por el momento, les dejo un ejemplo de cómo capturar una entrada desde el teclado e imprimirla por pantalla.
$nombre = <STDIN>; print $nombre;
Una vez que hemos escrito esto, procedemos a guardar el archivo con extensión .pl
Nota: Es recomendable crear un directorio donde vamos a guardar todos los scritps, esto es para mantener un orden. A si mismo, el nombre que le demos al archivo no debe contener espacios en blanco ni caracteres especiales. Luego de haber guardado el archivo abrimos un terminal, nos vamos a la ruta donde se encuentra el archivo recién creado y procedemos a ejecutar el siguiente comando:
$ perl nombre_archivo.pl
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
Se imprime Hola mundo
De esa forma estamos ejecutando el código que se encuentra dentro del archivo. Existe otro forma de ejecutar el código, y es ejecutándolo con ./ (En linux). Para esto el archivo debe tener permisos de ejecución (ls l para conocer los permisos). Le damos los permisos de ejecución de la siguiente forma:
$ chmod 755 nombre_archivo.pl
Luego ejecutamos el archivo
$ ./nombre_archivo.pl
Recuerden que Perl es un lenguaje interpretado, no necesitamos compilar antes de mandar a ejecutar.
2. Separación de instrucciones
Para separar las instrucciones se usa el signo punto y coma ( ; ) tal y como lo vimos en nuestro primer programa.
3. ComentariosComo en todo lenguaje de programación, en Perl podemos hacer comentarios que permiten documentar el código que vamos escribiendo. El símbolo a utilizar es el numeral ( # ).
#!/usr/bin/perl#Imprime Hola mundoprint 'Hola mundo';#Imprime otra cosaprint 'otra cosa;
Desafortunadamente en Perl no existen los comentarios multilínea, por lo que si queremos comentar varias líneas quedaría algo así
#!/usr/bin/perl#Imprime Hola mundo#Este es un segundo comentario#Este es un tercer comentarioprint 'Hola mundo';
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
• Ejercicios
2. Escriba un programa que imprima por pantalla su nombre y apellido.
3. Comente el código realizado en el ejercicio anterior. Los comentarios deben explicar qué hace el programa.
4. Diferencia entre comillas simples y doblesLas comillas dobles permite el ingreso de caracteres especiales. Un ejemplo de esto es el salto de línea. Supongamos que queremos mandar a imprimir un texto y que nos deje un salto de línea, para ello haríamos algo así:
#!/usr/bin/perlprint "Hola \n";
El \n es un carácter especial que realiza un salto de línea. Así como este, hay muchos más caracteres especiales, como el \t para tabular, \r para retorno de carro o regreso al inicio, ect.
Existen momentos en los que no queremos que se haga el salto de línea, sino que queremos que se imprima el \n como tal. Para ello podemos hacer uso de las comillas simples.
Las comillas dobles permiten también la interpolación, es decir, podemos imprimir el valor de una variable que se encuentra entre comillas dobles. Un ejemplo de esto es el siguiente:
#!/usr/bin/perl$a = 1; # declaración de variable en Perlprint "$a"; # imprime un 1 print '$a'; # imprime $a
• Ejercicio
4. Haga un resumen con sus propias palabras de las diferencias entre las comillas dobles y las simples en Perl. Realice pruebas en Perl.
5. Los tipos de datos básicos
En Perl existen 2 tipos de datos, las cadenas y los números. Dentro de los números se encuentran los enteros y los reales. La diferencia entre un entero y un real lo marca el punto flotante. Si el número tiene decimales debemos colocar el punto pero si se trata de un entero,
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
éste no lleva punto. Cuando se trata de una cadena, debe ir encerrada entre comillas dobles o comillas simples.
$entero = 24; $real = 4.3; $cadena = 'Cadena de caracteres';
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
3. Variables
Los nombres de las variables puede iniciar con letras, números siempre y cuando inicie con el carácter underscore ( _ ) y no necesitan ser declaradas antes de usarlas. Las letras mayúsculas y minúsculas son diferenciadas en los nombres de las variables.
#!/usr/bin/perl $Var; $var;
El tipo de la variable será asignado automáticamente por Perl, es decir, dependiendo del valor que se asigne a la variable, Perl sabe de qué tipo es la misma. Si declaramos una variable de tipo cadena y le sumamos una variable de tipo numérica, Perl buscará transformar la variable de tipo string a número. Si la transformación es exitosa procede a realizar la suma de los números, en el caso de no ser exitosa, transformará la cadena en el número 0 y procederá luego a realizar la respectiva suma. Al declarar variables en Perl y no inicializarlas, éstas toman valores predeterminados en función de su contexto. En un contexto numérico su valor es 0 y en un contexto de cadenas de caracteres, su valor predeterminado es la cadena vacía “”.
1. Alcance de las variables y espacio de nombres
En Perl es posible dividir por bloques el código y crear variables globales o locales. Al dividir por bloques es posible proteger los nombres de las variables de un bloque con la palabra reservada my. Cada archivo .pl es un bloque y dentro de cada archivo pueden haber subbloques que son creados con las llaves { }.
El ejemplo de abajo ilustra lo anteriormente dicho:
#!/usr/bin/perl #Declaración de variable global $var = 'Mi variable global'; #Creamos un bloque { #definimos una variable local al bloque con el mismo # nombre de la variable global my $var = 'Mi variable local '; #Imprimimos el valor de la variable dentro del bloque print "$var\n"; # Mi variable local
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
} #Cerramos el bloque#Imprimimos el valor de la variable fuera del bloque print "$var\n"; # Mi variable global
En resumidas palabras, cada vez que aparece llaves dentro de un programa de Perl, se está definiendo un bloque. Si utilizamos la palabra reservada my, ésta variable será local al bloque y no afectará a otras variables que estén fuera del bloque a pesar de que tengan el mismo nombre.
• Ejercicio
5. Realice un programa que intente sumar un número con una letra. Indique lo ocurrido y explique por qué ocurrió.
6. Cree un programa con el código de arriba, pruebe si éste funciona y haga un resumen de lo que allí ocurre. Añada otros bloques de variables y realice pruebas.
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
4. Operadores
En la siguiente tabla podrán conocer los operadores más importantes usados sobre variables.
Operadores Números Cadenas Significado
Asignación = = Asignación
Aritméticos
+ Suma
Resta
* Multiplicación
** Potenciación
/ División
% Resto
. Concatenación
x Repetición
Comparación
== eq Igual
!= ne Diferencia
< lt Menos que
> gt Mayor que
<= le Menor o igual
>= ge Mayor que
Lógicos
%% Y
|| O
! No
$a = 2**3; $b = 3 + $a; print "$a y $b "; # Imprime 8 y 11$cadena1 = 'Hola'; $cadena2 = 'Mundo'; $cadena = $cadena1.$cadena2; print $cadena; # HolaMundo$cadena = "$cadena1"x2;
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
print $cadena; # HolaHola
Los operadores aritméticos se pueden combinar con el de asignación para realizar la operación de forma más simple.
$a = $a + 3;$a += 3;
• Ejercicio
7. Realice operaciones con enteros y cadenas, almacene los resultado en variables e imprima los resultados por pantalla.
8. Imprima por pantalla el resultado de tres al cuadrado y tres al cubo. El resultado obtenido debe ser 9 y 27 respectivamente.
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
5. Las representaciones de datos
Perl tiene 3 tipos de representación de datos: Los escalares, los arrays y los arrays asociativos o tabla hash.
1. Escalares
Este tipo de datos va precedido por el signo $ y cada variable puede contener un solo valor entero, real o una cadena de caracteres.
#!/usr/bin/perlprint 1.2; #Numero realprint 3; #Numero entero#Cadena con comillas simplesprint 'Esto es una cadena';#Cadena con comillas doblesprint "Cada en comillas dobles";
• Ejercicio
9. Realice un programa que capture sus datos personales desde el teclado y los imprima por pantalla.
2. Arrays
Un array es una lista de datos de tipo escalar que inicia desde la posición cero. Las variables de tipo array van precedidas del símbolo ( @ ) y los elementos contenidos en el array pueden ser combinación de datos básicos.
Cada elemento de la lista es un escalar al que se le debe hacer referencia usando el símbolo de dato escalar ( $ ).
#!/usr/bin/perl @array1; @array2 = (1,"uno",2,"dos");print "@array2\n";$array2[4] = "otro"; # agregamos un nuevo valor a nuestro array print "El segundo elemento del array es $array2[1]";
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
En Perl no nos tenemos que preocupar de la reserva ni de la gestión de memoria.
• Ejercicios
10. Inicialice un array que contenga sus datos personales y profesión. Imprima por pantalla la profesión a la cual se dedica.
11. Añada un elemento a ejercicio anterior. ¿Qué sucedió?. ¿De qué tamaño era su array inicial?. Ahora imprima sólo el último elemento de su array.Ayuda. El tamaño del array lo obtenemos de la siguiente forma: $#array
3. Operaciones sobre los arrays
Existen funciones predefinidas en Perl que nos permiten realizar operaciones sobre los arrays (arreglos). Aquí vamos a nombrar algunas funciones interesantes:
• push: Permite añadir elementos al final de un array. El array es tratado como una pila. • pop: Permite sacar el último elemento de un array. • unshift: Permite agregar elementos a un array por el lado izquierdo.• shift: Permite sacar el primer elemento por el lado izquierdo del array • reverse: Invierte los valores de un array • sort: Ordena un array ascendentemente según código ASCCI
Veamos algunos ejemplos:
#!/usr/bin/perl@lista = (1,2,3);push(@lista,4); # @lista=(1,2,3,4)$a = pop(@lista); # $a=4, @lista = (1,2,3)unshift(@lista,0); # @a = (0,1,2,3)$x=shift(@lista); # $x=0, @lista = (1,2,3)@lista=reverse(@lista); # @lista = (3,2,1)@lista = sort(@lista); # @lista = (1,2,3)@lista = (1,2,16,32,4,64,8);#Sort ordena los valores como si fueran string@lista = sort(@lista); # @lista = (1,16,2,32,4,64,8)
• Ejercicios
12. Crear un programa que ingrese 4 nombres de personas, los almacene en un array, los ordene ascendentemente.
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
13. Crear un programa parecido al de arriba con la diferencia que el ordenamiento será de forma descendente. Nota: Los nombres deben ser capturados por pantalla con <STDIN>
4. Arrays asociativos
Un array asociativo está indexado por cadenas de caracteres y no por números. Para definir el tipo de dato array asociativo se utiliza % y la indexación por clave se hace utilizados las llaves { }.
Cada elemento del array está indexado por el anterior formando parejas (clave, valor).
%numero = (1, "uno",2,"dos",3,"tres"); $numero{"cuatro"} = 4; # clave = cuatro. Valor = 4.
Otra forma de trabajar con los array asociativos es la siguiente
%meses = (“Enero”=> "Ene",“Febrero”=>"Feb",“Marzo”=>"Mar");
Al igual que para los arrays, los arrays asociativos también tienes funciones que nos pueden ser muy útiles a la hora de trabajarlos.
La función keys devuelve un array con las claves de un array asociativo. La función values devuelve un array con los valores de un array asociativo. Con exits($hash{clave}) podemos ver si una clave existe o no. Con delete($hash{clave}) se elimina un elemento de un array asociativo.
• Ejercicios
14. Copie el ejemplo del array asociativo %meses y agregue el mes de Abril.
15. Inicialice un array asociativo para los días de la semana y muestre por pantalla el valor de la tercera clave. Ayuda: Usa la función keys
16. Crear un array asociativo que almacene los datos de una persona: Nombre, Apellido, Cédula, etc, e imprima por pantalla.
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
6. Estructuras de control
Las estructuras de control permiten cambiar el flujo normal del programa.
1. Instrucciones if, else, elsif
Las sintaxis de estas instrucciones son las siguientes:
if (condidión) { sentencias;}
if (condidión) { sentencias;}else { sentencias;}
if (condidión) { sentencias;}elsif (condidión) { sentencias;}
#!/usr/bin/perl print "Ingrese su edad: "; $edad = <stdin>; if ($edad >= 18 && $edad <110) { printf "Eres mayor de edad\n"; } elsif ($edad<18 && $edad >= 0) { printf "Eres menor de edad\n"; }
Otra forma de trabajar los if para eliminar las { } es la siguiente:
sentencia if (condición);
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
#!/usr/bin/perl print "Ingrese su edad: "; $edad = <stdin>; printf "Eres mayor de edad\n" if ($edad >= 18 && $edad <110); printf "Eres menor de edad\n" if ($edad<18 && $edad >= 0)
2. Instrucción unless
Hace todo lo contrario al if, es decir, ejecuta la acción si no se cumple la condición. Realizamos el ejercicio anterior usando la instrucción unless
sentencia unless (condición);
#!/usr/bin/perl print "Ingrese su edad: "; $edad = <stdin>; printf "Eres menor de edad\n" unless ($edad >= 18 && $edad <110); printf "Eres mayor de edad\n" unless ($edad<18 && $edad >= 0);
• Ejercicios
17. Ejecutar el código de ejemplo de unless. ¿Cuál es la salida obtenida y por qué?.
3. Instrucción while
Ejecuta un bloque de instrucciones mientras la condición sea verdadera. Con esta instrucción, el bloque se ejecuta al menos una vez.
Su sintaxis es la siguiente:
while (condición) {
sentencias;
}
#!/usr/bin/perl $cont = 0; while ($cont <5) {
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
print "$cont\n"; $cont++; # Imprime los números del 0 al 4.}
4. Instrucción until
Esta instrucción, a diferencia del while, permite que el código se ejecute al menos una vez y se repite mientras la condición sea falsa .
Sintaxis:
until (condición) { instrucciones;}
#!/usr/bin/perl $cont = 0; until ($salir eq 's') { print "$cont\n"; # Imprime el primer número sin importar el valor que tenga $salir $cont++; $salir = "s" if ($cont == 5); }
Este ejercicio se puede hacer de forma más sencilla. Se programó así para que el lector interprete mejor la función de la sentencia until.
5. Instrucción for
Permite ejecutar un bloque de código controlando el valor de las variables que intervienen en el control del flujo.
Su sintaxis:
for (valor de inicio; condición de parada; valor de incremento/decremento) {
sentencias;}
#!/usr/bin/perl for ($cont = 0; $cont < 5; $cont++) { print "$cont\n";
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
}
6. Instrucción foreach
El foreach nos permite obtener la clave o el valor de un array asociativo. Por ejemplo, si queremos obtener las claves hacemos lo siguiente:
#!/usr/bin/perl%array = ("clave1","Valor 1","clave2","Valor 2");foreach $clave (keys %array){ print "$clave \n";}
En el caso de querer imprimir los valores hacemos algo como esto:
#!/usr/bin/perl%array = ("clave1","Valor 1","clave2","Valor 2");foreach $valores (values %array){ print "$valores \n";}
7. Instrucción last
Con esta instrucción se interrumpe la ejecución del bucle y continua justo después del bloque.
last;
8. Instrucción next
Interrumpe la ejecución del bloque de instrucción actual, no el bloque, y continua con la ejecución de la próxima iteración.
next;
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
• Ejercicios
18. Realice un programa que permita determinar si una fecha es mayor a otra. El formato de fecha debe ser yyy/mm/dd.
19. Realice un programa que imprima por pantalla la tabla de multiplicar del 9. Se debe utilizar estructuras de repetición.
20.Realice un programa que permita al usuario ingresar el nombre de un artículo, el precio del mismo y la cantidad que desea comprar. El programa debe sumarle el IVA(11%) y calcular el total a pagar por el usuario (Debe validar los tipos de datos).
21. Escriba un programa que imprima por pantalla lo siguiente:
Nota: Utilizando estructuras de repetición.
**********
22.Escriba un programa que imprima por pantalla lo siguiente:
****************
23.Escriba un programa que imprima por pantalla lo siguiente:
* *** ***** ******* ********* ******* ***** ***
*
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
24. Realice un programa que verifique si un año es bisiesto o no.
25.Realice un programa que obtenga la hora del sistema y la muestre en formato de uso común. La salida deberá tener el siguiente formato: Jueves 10 de febrero del 2011.
26.Realice un programa que obtenga la hora del sistema (hhmmss) y le sume una cantidad de segundos ingresada por el usuario.
27. Realice un programa que le sume un día a la fecha actual.
Nota: La fecha se puede obtener del sistema.
T.S.U Joger QuinteroT.S.U Iris Uzcátegui
Bibliografía
• http://www.ulpgc.es/otros/tutoriales/perl/cap1.htm
• http://flanagan.ugr.es/perl/
• http://perlrules.mx.tripod.com/
T.S.U Joger QuinteroT.S.U Iris Uzcátegui