4. Humberto Ferrer C.
Historia de Perl 1.000
Fue creado por Larry Wall en 1987
Originalmente fue creado para la manipulación de textos.
Perl is a interpreted language optimized for scanning arbitrary text files,
extracting information from those text files, and printing reports based on that
information. It's also a good language for many system management tasks. The
language is intended to be practical (easy to use, efficient, complete) rather than
beautiful (tiny, elegant, minimal).
18/dic
5. Humberto Ferrer C.
El 5 de enero del 1988 se libero
Historia de Perl 2.000
•Se integraron las expresiones regulares
•El uso de subrutinas
•Recursividad
•Manejo de archivos
•Integración de foreach
•Asignación múltiple
6. Humberto Ferrer C.
El 18 de octubre del 1989 se libero
Historia de Perl 3.000
Principalmente se ocupaba para administración
Paso por referencia a las subrutinas
Incorporación del depurador
Se pueden cortar las listas
Incremento en las funciones. (mkdir, rmdir, getppid …)
7. Humberto Ferrer C.
El 21 de marzo del 1991 se libero
The first edition of Programming Perl
Utilización para WEB
Incorporación a Linux
Historia de Perl 4.000
8. Humberto Ferrer C.
El 18 de octubre del 1994 se libero
Orientación a Objetos
El uso de :: como delimitador de paquete
Incremento en las funciones: abs(), chomp(), glob(),…
Se introduce => como sinónimo de comas
Se crea CPAN (Comprehensive Perl Archive Network)
Historia de Perl 5.000
9. Humberto Ferrer C.
Paradigma
"Hay más de una forma de hacerlo".
Larry Wall, autor del lenguaje de
programación Perl.
Perl no establece ninguna paradigma de programación
(de hecho, no se puede decir que sea orientado a
objetos, modular o estructurado aun cuando soporta
directamente todos estos paradigmas)
13. Humberto Ferrer C.
Variables
Escalares
Siempre inician con $ y un caracter
Arreglos
Siempre inician con @ y un caracter
Arreglos asociados
Siempre inician con % y un caracter
No es necesario predeclarar las variables, se pueden
empezar a usar directamente en las expresiones.
14. Humberto Ferrer C.
Variables especiales
Existen dos variables muy importantes en Perl
las variables anónimas
$_
@_
Y sirven para el paso de parámetros.
15. Humberto Ferrer C.
Operadores de comparación
Comparación Numerico Cadenas
Igual == eq
No igual != ne
Menor que < lt
Mayor que > gt
Menor o igual <= le
Mayor o igual >= ge
17. Humberto Ferrer C.
Subrutinas
Para definir una subrutina o función se utiliza la
palabra sub
sub suma {
$valor0=shift @_;
$valor1=shift @_;
return $valor1+$valor0;
}
…
print suma(1,2);
18. Humberto Ferrer C.
Expresiones regulares
Una expresión regular es una forma de expresar
gramaticalmente la estructura de cualquier cadena
alfanumérica. Y se realiza mediante el operador //
Modificadores de expresiones regulares
Operador Función
. Describe cualquier carácter, excepto newline.
( ) Agrupa una serie de patrones en un simple elemento.
+,*,? Coinciden con el elemento al que preceden repetido 1 o más veces, 0 o más, ó 0 ó 1.
[..] Indica una clase de caracteres, [^...] niega la clase, - indica un rango decaracteres, como [a-z].
(..¦..¦..) Coincide con una de las alternativas.
w,W Coincide con los alfanuméricos, W con los no-alfanuméricos.
s,S Coincide con los espacios en blanco, S con los que no lo son.
d D Coincide con los numéricos, D no-numéricos.
b,B Coincide con límites de palabra, B con el interior de una palabra.
$,^ Coincide con el final de una línea o cadena y con el principio.
19. Humberto Ferrer C.
Módulos
Un módulo proporciona una manera de empaquetar
el código de Perl para reusarse.
#!/usr/local/bin/perl
##### Modulo.pm
use File;
sub funcion {
…
}
1;
20. Humberto Ferrer C.
Orientación a objetos
Un objeto de Perl es una modificación de los módulos a
los cuales se les da una referencia a las clases.
#!/usr/local/bin/perl
## objeto.pm
package objeto;
sub new { #contructor
my $self = {};
$self->{METODOS} = undef;
bless($self);
return $self;
}
sub DESTROY {# Destructor.
print "Destruido.n";
}
sub medotodos { # metoros
my $self = shift;
if (@_) {
$self->{METODOS} = shift;
...
}
return $self->{METODOS};
}
1;
21. Humberto Ferrer C.
CPAM
CPAN's 7240 modules distributions
in alphabetical order by modules contained in the
distributions
Wed Nov 24 16:09:56 2004 GMT
Entre algunas categorias: Algorithm, AltaVista, Apache, ASP,
Audio, Business, CAD , Calendar , CGI , Chemistry , Crypt ,
DateTime , Email , Event , Excel , Exporter , Gtk …
22. Humberto Ferrer C.
Ejemplo palindrome
#!/usr/bin/perl
# Palindrome.pl
# Humberto Ferrer C.
@pila=@lista ='';
print "Ingrese una palabra para verificar si es
palindromen";
$entrada=<STDIN>;
chop($entrada);
@lista=split('',$entrada);
if($#lista%2) {
for($i=0;$i<$#lista/2;$i++) {
push @pila, $lista[$i];
print "@pila n";
}
for(;$i<$#lista+1;$i++) {
print "@pila <-" . $lista[$i]. "n";
$l=pop @pila;
if($l ne $lista[$i]) {
print "No es palindromen";
exit;
}
}
print "si fuen";
} else {
for($i=0;$i<$#lista/2;$i++) {
push @pila, $lista[$i];
printl ;
}
$i++;
for(;$i<$#lista+1;$i++) {
print "@pila <-" . $lista[$i]. "n";
$l=pop @pila;
if($l ne $lista[$i]) {
printl "No es palindrome";
exit;
}
}
printl "si fue";
}
23. Humberto Ferrer C.
Ventajas
Aunque desarrollado originalmente en un entorno
UNIX, actualmente hay versiones para casi todos
los sistemas operativos ya que esta programado en
C.
24. Humberto Ferrer C.
Ventajas
Cuando ejecutamos un programa en Perl, se
compila el código fuente a un código
intermedio en memoria, se le optimiza pero
es ejecutado por un motor, como si se
tratara de un intérprete. El resultado final,
es que utilizamos algo que se comporta
como un intérprete, pero que tiene un
rendimiento comparativo al de programas
compilados
25. Humberto Ferrer C.
Desventajas
Poco tipificado
No es recomendado para las siguientes
tareas:
Sistemas de tiempo real
Desarrollo de bajo nivel del sistema operativo
que trabajen con controladores
Aplicaciones de memoria compartida de
procesos o aplicaciones extremadamente largas.
26. Humberto Ferrer C.
Algunas aplicaciones
Sistemas operativos
Perl/Linux http://perllinux.sourceforge.net/
Manipulación de textos
Páginas dinámicas CGI
Administración UNIX