Date post: | 30-Dec-2015 |
Category: |
Documents |
Upload: | cathleen-monroe |
View: | 28 times |
Download: | 2 times |
PERLPractical Extraction and Report Language
Dra. Ana Lilia Laureano CrucesLenguajes de Programación
Ferrer Camacho
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 subrutinasIncorporación del depuradorSe pueden cortar las listasIncremento 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.
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 asociadosSiempre 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 “”};
forfor($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 regularesUna 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.pmuse File; sub funcion { …}
1;
Humberto Ferrer C.
Orientación a objetosUn 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.pmpackage objeto;
sub new { #contructormy $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 distributionsWed 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 palindrome\n";$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 palindrome\n"; exit;}
}
print "si fue\n";
} 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 operativosPerl/Linux http://perllinux.sourceforge.net/
Manipulación de textos
Páginas dinámicas CGI
Administración UNIX