SlideShare una empresa de Scribd logo
1 de 27
PERL
Practical Extraction and Report Language
Dra. Ana Lilia Laureano Cruces
Lenguajes de Programación
Ferrer Camacho
Humberto Ferrer C.
Temas a abordar
Historia
Características del lenguaje
Humberto Ferrer C.
Historia de Perl 0.000
Presentación del lenguaje Perl por
Larry Wall a sus socios en 1986
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
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
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 …)
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
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
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)
Humberto Ferrer C.
Características
Flexibilidad
Claridad
Portabilidad
Humberto Ferrer C.
Algo de programación
Variables
Estructuras de control
Expresiones regulares
Subrutinas
Módulos
Orientación a objetos
Humberto Ferrer C.
Funciones de Perl
-X,abs, accept, alarm, atan2, bind, binmode, bless, caller, chdir, chmod,
chomp, chop, chown, chr, chroot, close, closedir, connect, continue, cos,
crypt, dbmclose, dbmopen, defined, delete, die, do, dump, each, endgrent,
endhostent, endnetent, endprotoent, endpwent, endservent, eof, eval, exec,
exists, exit, exp, fcntl, fileno, flock, fork, format, formline, getc,
getgrent, getgrgid, getgrnam, gethostbyaddr, gethostbyname, gethostent,
getlogin, getnetbyaddr, getnetbyname, getnetent, getpeername, getpgrp, getppid,
getpriority, getprotobyname, getprotobynumber, getprotoent, getpwent, getpwnam,
getpwuid, getservbyname, getservbyport, getservent, getsockname, getsockopt,
glob, gmtime, goto, grep, hex,import, index, int, ioctl, join, keys, kill,
last, lc, lcfirst, length, link, listen, local, localtime, lock, log, lstat, m,
map, mkdir, msgctl, msgget, msgrcv, msgsnd, my, next, no, oct, open, opendir,
ord, our, pack, package, pipe, pop, pos, print, printf, prototype, push, q, qq,
qr, quotemeta, qw, qx, rand, read, readdir, readline, readlink, readpipe, recv,
redo, ref, rename, require, reset, return, reverse, rewinddir, rindex, rmdir,
s, scalar, seek, seekdir, select, semctl, semget, semop, send, setgrent,
sethostent, setnetent, setpgrp, setpriority, setprotoent, setpwent, setservent,
setsockopt, shift, shmctl, shmget, shmread, shmwrite, shutdown, sin, sleep,
socket, socketpair, sort, splice, split, sprintf, sqrt, srand, stat, study,
sub, substr, symlink, syscall, sysopen, sysread, sysseek, system, syswrite,
tell, telldir, tie, tied, time, times, tr, truncate, uc, ucfirst, umask, undef,
unlink, unpack, unshift, untie, use, utime, values, vec, wait, waitpid,
wantarray, warn, write, y
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.
Humberto Ferrer C.
Variables especiales
Existen dos variables muy importantes en Perl
las variables anónimas
$_
@_
Y sirven para el paso de parámetros.
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
Humberto Ferrer C.
Estructuras de control
if/unless
print “hola” if(true);
unless (false) { print “hola”; }
while/until
while(true) {print “”};
for
for($i = 1; $i <= 10; $i++) { print "$i "; }
foreach
@a = (1,2,3,4,5); foreach $b (@a) {$b *=3; print $b; }
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);
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.
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;
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;
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 …
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";
}
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.
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
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.
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
Humberto Ferrer C.
Bibliografía
Programming Perl, por
Larry Wall y otros
www.perl.org
www.cpam.com

Más contenido relacionado

La actualidad más candente

Beginners PHP Tutorial
Beginners PHP TutorialBeginners PHP Tutorial
Beginners PHP Tutorial
alexjones89
 
Instrucciones C++
Instrucciones C++Instrucciones C++
Instrucciones C++
grachika
 

La actualidad más candente (20)

Algoritmos de Dekker
Algoritmos de DekkerAlgoritmos de Dekker
Algoritmos de Dekker
 
Perl tutorial
Perl tutorialPerl tutorial
Perl tutorial
 
Desacoplar la lógica de negocio del framework
Desacoplar la lógica de negocio del frameworkDesacoplar la lógica de negocio del framework
Desacoplar la lógica de negocio del framework
 
NOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVANOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVA
 
Beginners PHP Tutorial
Beginners PHP TutorialBeginners PHP Tutorial
Beginners PHP Tutorial
 
Estructura de Datos: Pila
Estructura de Datos: PilaEstructura de Datos: Pila
Estructura de Datos: Pila
 
Prime number program in C
Prime number program in CPrime number program in C
Prime number program in C
 
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
 
php basics
php basicsphp basics
php basics
 
Regular Expressions 101 Introduction to Regular Expressions
Regular Expressions 101 Introduction to Regular ExpressionsRegular Expressions 101 Introduction to Regular Expressions
Regular Expressions 101 Introduction to Regular Expressions
 
C programming tutorial
C programming tutorialC programming tutorial
C programming tutorial
 
C++11 & C++14
C++11 & C++14C++11 & C++14
C++11 & C++14
 
Punteros y Arreglos
Punteros y ArreglosPunteros y Arreglos
Punteros y Arreglos
 
Ejercicios resueltos de borland c++
Ejercicios resueltos de borland c++Ejercicios resueltos de borland c++
Ejercicios resueltos de borland c++
 
Introduction To PHP
Introduction To PHPIntroduction To PHP
Introduction To PHP
 
Instrucciones C++
Instrucciones C++Instrucciones C++
Instrucciones C++
 
Pointers in C
Pointers in CPointers in C
Pointers in C
 
Arrays in linux
Arrays in linuxArrays in linux
Arrays in linux
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 
Types of Statements in Python Programming Language
Types of Statements in Python Programming LanguageTypes of Statements in Python Programming Language
Types of Statements in Python Programming Language
 

Destacado

Bases legales. 65º aniversario México #destinos iberia
Bases legales. 65º aniversario México #destinos iberiaBases legales. 65º aniversario México #destinos iberia
Bases legales. 65º aniversario México #destinos iberia
Iberia
 
Presentación Reducción de Gastos Generales ERA-EXECyL
Presentación Reducción de Gastos Generales ERA-EXECyLPresentación Reducción de Gastos Generales ERA-EXECyL
Presentación Reducción de Gastos Generales ERA-EXECyL
Fundación EXECyL
 
Desarrollo Compatible con el Clima en la Alta Cuenca del Rio Cauca
Desarrollo Compatible con el Clima en la Alta Cuenca del Rio CaucaDesarrollo Compatible con el Clima en la Alta Cuenca del Rio Cauca
Desarrollo Compatible con el Clima en la Alta Cuenca del Rio Cauca
Decision and Policy Analysis Program
 
Postales de navidad para niños
Postales de navidad para niñosPostales de navidad para niños
Postales de navidad para niños
pitisfly
 
Geothermal Resource Exploration
Geothermal Resource ExplorationGeothermal Resource Exploration
Geothermal Resource Exploration
Ali Osman Öncel
 

Destacado (20)

Catálogo 15 Oriflame España
Catálogo 15 Oriflame EspañaCatálogo 15 Oriflame España
Catálogo 15 Oriflame España
 
Estetica e usabilità apparente
Estetica e usabilità apparenteEstetica e usabilità apparente
Estetica e usabilità apparente
 
La Rueda De Falkirk
La Rueda De FalkirkLa Rueda De Falkirk
La Rueda De Falkirk
 
Atelier 7 Créez vos campagnes avec MailJet
Atelier 7 Créez vos campagnes avec MailJetAtelier 7 Créez vos campagnes avec MailJet
Atelier 7 Créez vos campagnes avec MailJet
 
Bases legales. 65º aniversario México #destinos iberia
Bases legales. 65º aniversario México #destinos iberiaBases legales. 65º aniversario México #destinos iberia
Bases legales. 65º aniversario México #destinos iberia
 
High accuracy liquid level measurement-Proservo NMS5
High accuracy liquid level measurement-Proservo NMS5High accuracy liquid level measurement-Proservo NMS5
High accuracy liquid level measurement-Proservo NMS5
 
Presentación Reducción de Gastos Generales ERA-EXECyL
Presentación Reducción de Gastos Generales ERA-EXECyLPresentación Reducción de Gastos Generales ERA-EXECyL
Presentación Reducción de Gastos Generales ERA-EXECyL
 
Actividad 2 correo exhange windows
Actividad 2 correo exhange windowsActividad 2 correo exhange windows
Actividad 2 correo exhange windows
 
Abono tesis5
Abono tesis5Abono tesis5
Abono tesis5
 
Ccca 1973
Ccca 1973Ccca 1973
Ccca 1973
 
Desarrollo Compatible con el Clima en la Alta Cuenca del Rio Cauca
Desarrollo Compatible con el Clima en la Alta Cuenca del Rio CaucaDesarrollo Compatible con el Clima en la Alta Cuenca del Rio Cauca
Desarrollo Compatible con el Clima en la Alta Cuenca del Rio Cauca
 
Al andalus presentacion completa
Al andalus presentacion completaAl andalus presentacion completa
Al andalus presentacion completa
 
Pequeño Homenaje a C.G. Jung
Pequeño Homenaje a C.G. JungPequeño Homenaje a C.G. Jung
Pequeño Homenaje a C.G. Jung
 
Postales de navidad para niños
Postales de navidad para niñosPostales de navidad para niños
Postales de navidad para niños
 
¿por qué elegir ágil? por María Fernanda Escudero
¿por qué elegir ágil? por María Fernanda Escudero¿por qué elegir ágil? por María Fernanda Escudero
¿por qué elegir ágil? por María Fernanda Escudero
 
Geothermal Resource Exploration
Geothermal Resource ExplorationGeothermal Resource Exploration
Geothermal Resource Exploration
 
Mano de obra
Mano de obraMano de obra
Mano de obra
 
Memoria 2013 san paio
Memoria 2013 san paioMemoria 2013 san paio
Memoria 2013 san paio
 
Manual de reglas ortográficas
Manual de reglas ortográficasManual de reglas ortográficas
Manual de reglas ortográficas
 
Tensores
TensoresTensores
Tensores
 

Similar a Perl

Similar a Perl (20)

Introducción a php
Introducción a phpIntroducción a php
Introducción a php
 
Lenguajec intorduccionui
Lenguajec intorduccionuiLenguajec intorduccionui
Lenguajec intorduccionui
 
Php
PhpPhp
Php
 
0139-php-y-mysql-lenguaje-php-basico.pdf
0139-php-y-mysql-lenguaje-php-basico.pdf0139-php-y-mysql-lenguaje-php-basico.pdf
0139-php-y-mysql-lenguaje-php-basico.pdf
 
Php Basico
Php BasicoPhp Basico
Php Basico
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
Php
PhpPhp
Php
 
Tema2[php]
Tema2[php]Tema2[php]
Tema2[php]
 
Tema2 3
Tema2 3Tema2 3
Tema2 3
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básico
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
Bash Tips Tricks Campus
Bash Tips Tricks CampusBash Tips Tricks Campus
Bash Tips Tricks Campus
 
Presentacion
PresentacionPresentacion
Presentacion
 
Php
PhpPhp
Php
 
Php1
Php1Php1
Php1
 
Php1
Php1Php1
Php1
 
3 Introducción al lenguaje PHP
3 Introducción al lenguaje PHP3 Introducción al lenguaje PHP
3 Introducción al lenguaje PHP
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Programacion php
Programacion phpProgramacion php
Programacion php
 
Elementos del Hardware y Software
Elementos del Hardware y SoftwareElementos del Hardware y Software
Elementos del Hardware y Software
 

Perl

  • 1. PERL Practical Extraction and Report Language Dra. Ana Lilia Laureano Cruces Lenguajes de Programación Ferrer Camacho
  • 2. Humberto Ferrer C. Temas a abordar Historia Características del lenguaje
  • 3. Humberto Ferrer C. Historia de Perl 0.000 Presentación del lenguaje Perl por Larry Wall a sus socios en 1986
  • 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)
  • 11. Humberto Ferrer C. Algo de programación Variables Estructuras de control Expresiones regulares Subrutinas Módulos Orientación a objetos
  • 12. Humberto Ferrer C. Funciones de Perl -X,abs, accept, alarm, atan2, bind, binmode, bless, caller, chdir, chmod, chomp, chop, chown, chr, chroot, close, closedir, connect, continue, cos, crypt, dbmclose, dbmopen, defined, delete, die, do, dump, each, endgrent, endhostent, endnetent, endprotoent, endpwent, endservent, eof, eval, exec, exists, exit, exp, fcntl, fileno, flock, fork, format, formline, getc, getgrent, getgrgid, getgrnam, gethostbyaddr, gethostbyname, gethostent, getlogin, getnetbyaddr, getnetbyname, getnetent, getpeername, getpgrp, getppid, getpriority, getprotobyname, getprotobynumber, getprotoent, getpwent, getpwnam, getpwuid, getservbyname, getservbyport, getservent, getsockname, getsockopt, glob, gmtime, goto, grep, hex,import, index, int, ioctl, join, keys, kill, last, lc, lcfirst, length, link, listen, local, localtime, lock, log, lstat, m, map, mkdir, msgctl, msgget, msgrcv, msgsnd, my, next, no, oct, open, opendir, ord, our, pack, package, pipe, pop, pos, print, printf, prototype, push, q, qq, qr, quotemeta, qw, qx, rand, read, readdir, readline, readlink, readpipe, recv, redo, ref, rename, require, reset, return, reverse, rewinddir, rindex, rmdir, s, scalar, seek, seekdir, select, semctl, semget, semop, send, setgrent, sethostent, setnetent, setpgrp, setpriority, setprotoent, setpwent, setservent, setsockopt, shift, shmctl, shmget, shmread, shmwrite, shutdown, sin, sleep, socket, socketpair, sort, splice, split, sprintf, sqrt, srand, stat, study, sub, substr, symlink, syscall, sysopen, sysread, sysseek, system, syswrite, tell, telldir, tie, tied, time, times, tr, truncate, uc, ucfirst, umask, undef, unlink, unpack, unshift, untie, use, utime, values, vec, wait, waitpid, wantarray, warn, write, y
  • 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
  • 16. Humberto Ferrer C. Estructuras de control if/unless print “hola” if(true); unless (false) { print “hola”; } while/until while(true) {print “”}; for for($i = 1; $i <= 10; $i++) { print "$i "; } foreach @a = (1,2,3,4,5); foreach $b (@a) {$b *=3; print $b; }
  • 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
  • 27. Humberto Ferrer C. Bibliografía Programming Perl, por Larry Wall y otros www.perl.org www.cpam.com