Download - Introducción a perl
Lenguaje Perl
Dr. Orestes Febles Díaz
Introducción
•Origen y uso
•Tipos de datos
•Operadores y funciones
•Entradas y Salidas
•Alternativas y ciclos
Temas generales
Introducción
•Entender los conceptos básicos del
intérprete PERL.
•Escribir un programa en PERL para un
ambiente de programación.
•Resolver un problema sencillo usando PERL
Objetivos
Introducción
•Trabajo Práctico en laboratorio
•Pregunta Escrita Semanal
•Prueba Final
Evaluaciones
Introducción
•Qué es PERL?
•Versiones actuales.
•Sintaxis de un programa.
•Primer programa en PERL.
•Tipos de datos.
Temas Primera Clase
Introducción
•Origen y uso
•Tipos de datos
•Operadores y funciones
•Entradas y Salidas
•Alternativas y ciclos
Temas generales
Introducción
•Entender las características generales del
lenguaje.
•Deducir posible aplicaciones del lenguaje.
•Conocer los tipos de datos que utiliza PERL.
Objetivos
Introducción
•Fue creado por Larry Wall
• Lanzamiento 18 de diciembre de 1987.
• Perl 2, liberado en 1988, aportó un mejor motor
de expresiones regulares.
• Perl 3, liberado en 1989, añadió soporte para
datos binarios.
Origen de PERL
Introducción
• Programador y escritor nacido el 27/9/54.
• Su fe cristiana le ha influido en la propia
terminología de Perl (referencia bíblica
"Perla de gran valor" (Mateo 13:46).
• Ha ganado premios como Obfuscated C
Code (IOCCC) y el FSF Award for the
Advancement of Free Software en 1998.
Larry Wall
Introducción
•Hasta 1991 la única documentación de PERL
era una simple página de manual Unix.
•En 1991 se publicó Programming Perl (el libro
del dromedario) y se convirtió en la referencia
de facto del lenguaje.
Evolución
Introducción
•PERL se simboliza generalmente por un dromedario
(camello arábigo).
•O'Reilly es propietario de este símbolo como marca
registrada, para proteger la "integridad e impacto de
este símbolo"
Símbolo
Introducción
• “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 y
desarrollo de GUI”.
Concepto
Introducción
•En 2007, Perl 5 continua siendo mantenido.
•Características importantes y algunas
construcciones esenciales han sido añadidas,
incluyendo soporte Unicode, Hilos, soporte para
la programación orientada a objetos y otras
mejoras.
Evolución
Introducción
• Perl 5 fue liberado el 17 de octubre de 1994. A
destacar, los módulos proveen de un mecanismo para
extender el lenguaje sin modificar el intérprete.
• El 26 de octubre de 1995, se creó el Comprehensive
Perl Archive Network (CPAN),una colección de sitios
web que almacenan y distribuyen fuentes en Perl,
binarios, documentación, scripts y módulos.
PERL 5
Introducción
•Perl (Practical Extraction and Report Languaje).
•Pensado para la manipulación de cadenas de
caracteres, archivos y procesos.
•Utilizado actualmente para un amplio rango de
tareas incluyendo administración de sistemas,
desarrollo web, programación en red y otras.
Características
Introducción
•Es fácil de usar.
•Soporta la programación estructurada, la
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.
Características
Introducción
• No es pre-compilado, pero aún así es más rápido que la
mayoría de lenguajes interpretados
• Sus programas son analizados, interpretados y
compilados por el intérprete antes de su ejecución.
• Estas características hacen que el mantenimiento y la
depuración de un programa en PERL sean mucho más
sencilla que el mismo programa escrito en C.
Características
Introducción
•Estructura derivada de C.
•Lenguaje imperativo, con variables, expresiones,
asignaciones, bloques de código delimitados por
llaves, estructuras de control y subrutinas.
•Todas las variables son marcadas con un signo
precedente (sigil). Similar a los Shell.
Características
Introducción
• Soporta estructuras de datos complejas, funciones de
primer orden .
• Habilita el empaquetado de código reutilizable como
módulos.
• Realiza el tipado automático de datos y la gestión de
memoria.
• Tolera excepciones a las reglas y emplea la heurística
para resolver ambigüedades sintácticas.
Características
Introducción
• Tiene muchas y variadas aplicaciones, gracias a la disponibilidad
de muchos módulos estándares y provenientes de terceras
partes.
• Para escribir guiones (scripts) CGI. Es una de las "tres P" (Perl,
Python y PHP), que son los lenguajes más populares para la
creación de aplicaciones Web, .
• Es usado a menudo como un "lenguaje pegamento", ligando
sistemas e interfaces que no fueron diseñados específicamente
para interoperar; y para el "escarbado de datos“.
Aplicaciones
Introducción
• Es una popular herramienta de propósito general para
los administradores de sistemas, especialmente en
programas pequeños que pueden ser escritos y
ejecutados en una sola línea de comandos.
• Es ampliamente usado en finanzas y bioinformática,
donde es apreciado por su desarrollo rápido, tanto de
aplicaciones como de despliegue, así como la
habilidad de manejar grandes volúmenes de datos.
Aplicaciones
Introducción
• La administración de sistemas operativos.
• Potente en la creación de pequeños programas que
pueden ser usados como filtros para obtener
información de ficheros, realizar búsquedas, etc.
• Nació en un entorno Unix, pero ya hay versiones para
casi todas las plataformas existentes.
Aplicaciones
Introducción
• La creación de formularios en la Web.
• Para la creación de scripts CGI que realizan el
intercambio de información entre aplicaciones
externas y servicios de información.
Aplicaciones
Introducción
• Un script en PERL es una sucesión de instrucciones.
Éstas se delimitan por punto y coma (;).
• Los comentarios en los scripts deben ir precedidos
por el símbolo #.
• Los caracteres que siguen a este símbolo y que está
contenidos en la misma línea se consideran
comentarios y se ignoran.
Estructura de un programa
Introducción
• El siguiente script muestra la cadena de caracteres
"¡Hola, mundo!". Este script se llamará hola.pl y
contendrá las siguientes líneas.
#!/usr/local/bin/perl
print "¡Hola, mundo!";
• Una vez verificado los permisos de dicho script
estaremos listos para ejecutarlo simplemente tecleando
en la línea de comandos: hola.pl.
Hola Mundo
Introducción
• Un programa PERL conocer la ganancia en la venta de
un libro
print “Precio del libro comprado? ";
$precio= <STDIN>;
$ganancia= $precio * 0.15;
print “Mi ganancia es de $ganancia\n";
Resultados, Moneda???
Librería
Introducción
• Las variables se indican con un símbolo de $ en este caso se
trata de variables escalares, que contienen un valor numérico o
una cadena.
• La transformación se hace automáticamente. Cada variable se
declara en el momento que se usa, y si no se ha usado
anteriormente, aparece automáticamente con el valor 0 o "
(cadena nula).
• Las variables en PERL tienen todas visibilidad global, si no se
dice lo contrario.
Elementos Observados
Introducción
•Aparece la intervención del usuario, leyendo en
una variable lo que éste teclea.
•Se utiliza un filehandle o puntero a un fichero
abierto (el equivalente a un FILE* en C).
• Es utilizada la entrada estándar o STDIN
(estándar input); también existe la salida
estándar o STDOUT.
Elementos Observados
Introducción
• Los paréntesis angulares <>, indican que se lee del
fichero una línea completa.
• Interpolación de variables. Una variable incluida dentro
de una cadena entre comillas dobles será sustituida por
su valor (no en el caso de tratarse de comillas simples).
Elementos Observados
Introducción
• PERL permite representar los tipos de datos básicos como son los reales,
los enteros, las cadenas de caracteres y el tipo booleano.
• Los tipos numéricos (reales y enteros).
• Los valores numéricos expresados literalmente se presentan en forma de
valores reales codificados en doble precisión.. Por ejemplo:
• $x = 0.897; # un real $y = 6.23e-24; # un real
• $n = 567; # un entero
• $i = -234; # un entero
Tipos de Datos
Introducción
• Los valores enteros no pueden empezar por cero
porque esto permite especificar un entero mediante su
codificación octal o hexadecimal. El código octal se
antecede con en cero 0; el código hexadecimal se
antecede con un 0x o 0X. Por ejemplo:
• $x = 0377; # equivale a 255
• $y = 0xff; # equivale a 255
Octales y decimales
Introducción
•Las cadenas de caracteres se especifican por
medio de un sucesión de caracteres delimitada
por comillas ("..") o apóstrofes ('..').
•Cuando van delimitadas por comillas (".."), toda
variable referenciada en el interior de la cadena
se evalúa y se reemplaza por su valor.
Cadenas de caracteres
Introducción
• Las instrucciones siguientes:
$wld = "mundo";
$str = "¡Hola $wld!";
• asignan al escalar la cadena de caracteres "¡Hola mundo!". Por
el contrario, las cadenas de caracteres delimitadas por
apóstrofes se dejan intactas. Por ejemplo:
$str = '¡Hola $wld!';
• asigna al escalar $str la cadena de caracteres "¡Hola $wld!".
Ejemplos de cadenas
Introducción
• Se utiliza cuando la cadena de caracteres contiene varias
líneas y/o comillas o apóstrofes. Su sintaxis es la siguiente:
$str = <<etiqueta;
....
etiqueta
• El fin de la cadena se determina por la nueva línea que
contiene únicamente el identificador. Éste no debe ir
precedido por un espacio ni marca de tabulación.
Delimitando cadenas
Introducción
$mensaje= <<SALUDO;
hola,
buenos días,
buenas tardes,
adiós,
SALUDO
Ejemplo
Introducción
•El tipo booleano existe, al igual que en C, de
modo implícito, es decir, un número es falso si
es igual a cero y verdadero en cualquier otro
caso.
•Como el cero está asociado a la cadena vacía
(""), ésta también equivale al valor falso.
Tipo de dato booleano
Introducción
• Tres tipos de representaciones de datos en PERL:
• Los escalares, los arrays y los arrays de indexación
literal o listas asociadas.
• Estas tres representaciones permiten asociar a cada
variable utilizada un tipo. Las variables no tienen que
declararse antes de su uso. Se asignan de manera
dinámica y se les asigna un valor predeterminado en
función del contexto.
Representaciones de Datos
Introducción
• Las variables de tipo escalar van precedidas por el
símbolo $.
$real = 4.53;
$entero = -45;
$ristra = "Hola";
• En un contexto numérico el valor predeterminado es 0,
mientras que en un contexto de cadena de caracteres el
valor predeterminado es la cadena vacía "".
Escalares
Introducción
• El tipo y el valor de las variables en Perl se
determina a partir del contexto.
• $x = 4.1; # un real
• $y = "11"; # una cadena de caracteres
• $z = $x + $y; # adición de dos valores numéricos
• $t = $x . $y; # concatenación de dos cadenas
• print $z, "\n", "$t \n";
Declaración de Tipo
Introducción
• $z ------------------------- 15.1.
• $t ------------------------- "4.111".
•Reiteramos que en Perl no es necesario realizar
una declaración de tipos, ni es necesario el
operador.
Los valores serán …
Introducción
• Sean las líneas de código
• $year = 35;
• print "Tengo $year años";
• El resultado :????????
Interpolación
Introducción
• Un array es una lista de datos de tipo escalar. Cada
elemento de la lista es una variable escalar a la que
se le asocia un valor. Las variables de tipo array se
identifican por el prefijo arroba @. Por ejemplo:
@numeros = (2, 1, 667, 23, 2.2, 5, 6);
@letras = ("perro", "gato", "león");
@mezcla = ("hola", 23, "adios", 31.234);
Arrays
Introducción
• También se permite definir los elementos de un array a partir de sus
valores extremos como se muestra a continuación:
• @alfabeto = (a..z);
• Los elementos de un array se referencian mediante índices. El primer
elemento se referencia por el índice 0. Por ejemplo:
$numeros[4]; ?????
$letras[2]; ?????
$mezcla[0]; ?????
Arrays
Introducción
• @num1 = @numeros[1..3]; # @num1 = (1, 667, 23)
• @str = @letras[0,2]; # @str = ("perro", "león")
• ($ristra, $num) = @mezcla; # $ristra = "hola", $num = 23
• Esta última instrucción vemos que permite asignar los dos
primeros valores del array @mezcla a las variables escalares
$ristra y $num. Por otro lado, el acceso a un array fuera de
rango devuelve un valor indefinido 0 o "" según el contexto.
Acceso a Array mediante operador
Introducción
•Una lista asociativa está indexada por cadenas
en lugar de por números. Se utiliza % para
definir el tipo de lista asociativa y un elemento
está indexado por el anterior formando ambos
parejas del tipo (clave, valor).
Listas asociativas
Introducción
• %cuota = ("root", 1000, "pat", 256, "fiona", 4000);
• En este caso, para acceder a cualquiera de los elementos de
%cuota debemos conocer su clave. Por ejemplo:
• $id = $cuota{"pat"}; # $id = 256
• Esta lista puede completarse añadiendo nuevos valores y
asociando a cada clave el valor correspondiente. Por ejemplo:
• $cuota{"dave"} = 250;
• donde la clave es "dave" y el valor asociado es 250.
Ejemplo
Introducción
• Las referencias son el equivalente a los punteros en C.
Es un tipo de datos que permite referenciar datos
contenidos en otra entidad.
• La definición de referencia se usa mediante el operador
de referencia backslash ("\").
• A diferencia de C, Perl no deja "huella" de las
referencias en memoria
Las Referencias
Introducción
• Podemos crear una referencia usando un operador
de referenciación en una variable o un valor. En el
caso de la variable es crear un medio alternativo de
acceder al valor de la variable.
• $rescalar = \$escalar;
• $rarreglo = \@arreglo;
• $rhash = \%hash;
Referencias
Introducción
• Por otro lado, cuando usamos el operador de referenciación
con un valor, creamos objetos anónimos que sólo pueden ser
accedidos por medio de la referencia.
• $rescalar=\"hola"; #referencia a la cadena anónima "hola"
• $rarray=[1,2,3]; #referencia al array anónimo (1,2,3)
• $rlista={"llave1" => "dato1","llave2" => "dato2"};
• Nota: En esta representación usamos el operador "=>" para la
representación de listas asociativas anónimas.
Observación
Introducción
•%rNumeros = {"arabes" => [1,2,3], "romanos"
=> [I, V, X]}
•Una lista asociativa anónima donde las claves
son cadenas de caracteres y los valores son
referencia a array
Estructuras de datos más complejas
Introducción
•$rarray=[1,2,3,4] #crea arreglo anónimo
(1,2,3,4)
•$$rarray[2]="tres";
•#modifica el array anónimo a (1,2,"tres",4)
•@$rarray=(); #limpia el arreglo anónimo
Uso de las referencias a arrays y listas asociativas.
Introducción
•PERL es un lenguaje interpretado que tiene
un amplio uso y es particularmente potente
para en tratamiento de listas
Conclusiones