Está en la página 1de 17

Captulo 2: web dinmica

CC51T Desarrollo de Aplicaciones web

Perl

Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Perl
Practical Extraction and Report Language Creado e implementado por Larry Wall en 1987 Es un lenguaje interpretado Combina caractersticas de Shell, sed, awk, de C y tambin BASIC Muy til para desarrollar de forma rpida Manejo de archivos Funciones de sistema Lenguaje preferidos para el desarrollo de aplicaciones WEB perlmonks.org
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Ejecutar un programa perl


perlprograma.pl

Tambin se puede agregar a la primera lnea del programa (path de perl):


#!/usr/bin/perl Se debe dar permisos de ejecucin al programa Ms informacin, ejecute:
perldoc perldoc perldoc perldoc perlrun
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Perl es muy permisivo


Deja mucha responsabilidad en el programador Para dar robustez a los programas se debe utilizar
#!/usr/bin/perl usestrict; usewarnings;

Con use strict se capturan problemas potenciales


Se detiene la ejecucin apenas se encuentra

Con use warnings se generan advertencias pero sigue la ejecucin Para el curso siempre deben usar estas lneas
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Sintaxis
Serie de sentencias
No es necesario un main()

Las sentencias terminan con ; comentarios comienzan con #


#Esteesuncomentario print"Hello,world";

Con se interpolan variables


print"Hello,$name\n"; print'Hello,$name\n';#imprime$nameliteral
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Variables
Escalares
my$animal="camel"; my$answer=42; print$animal; print"Theanimalis$animal\n"; print"Thesquareof$answeris",$answer* $answer,"\n";

Existen variables especiales:


print;#imprimeelvalorde$_(variabledefault)

Otras variables especiales: perldoc perlvar Alcance de las variables


Revisar scope.pl
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Variables
Arreglos: representa una lista de valores
my@animals=("camel","llama","owl"); my@numbers=(23,42,69); my@mixed=("camel",42,1.23); print$animals[0];#prints"camel" print$animals[1];#prints"llama" print$mixed[$#mixed]; if(@animals<5){...}#verdaderositienemenos #5elementos @animals[0,1];#retorna("camel","llama"); @animals[0..2];#retorna("camel","llama","owl"); @animals[1..$#animals];#retornatodosexceptoel #primero
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Variables: arreglos
Funciones tiles:
my@sorted=sort@animals; my@backwards=reverse@numbers;

Arreglos especiales:
@ARGV: argumentos que se reciben por lnea de comandos @_: argumentos que recibe una subrutina Mas informacin: perldoc perlvar

Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Variables: Hashes
Conjunto de pares llave valor
my%fruit_color=("apple","red","banana", "yellow"); my%fruit_color=( apple=>"red", banana=>"yellow", ); $fruit_color{"apple"};#retorna"red" my@fruits=keys%fruit_colors; my@colors=values%fruit_colors;

Hash especial: %ENV (variables.pl)


Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Sentencias condicionales
if(condition){ }elsif(othercondition){ }else{ } if($zippy){ print"Yow!"; } print"Yow!"if$zippy; print"Wehavenobananas"unless$bananas;

Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Ciclos
while(condition){ ... } until(condition){ ... } print"LALALA\n"while1;#Quehace? for($i=0;$i<=$max;$i++){ ... } foreach(@array){ print"Thiselementis$_\n"; } print$list[$_]foreach0..$max;
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Operadores y funciones
Aritmticos + addition - subtraction * multiplication / division Comparacin Numrica == equality != inequality < less than > greater than <= less than or equal >= greater than or equal

Comparaciones Strings: eq equality ne inequality lt less than gt greater than le less than or equal ge greater than or equal Operadores Lgicos && and || or ! not
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Archivos
open(my$in,"<","input.txt")ordie"Can'topeninput.txt:$!"; open(my$out,">","output.txt")ordie"Can'topenoutput.txt:$!"; open(my$log,">>","my.log")ordie"Can'topenmy.log:$!"; my$line=<$in>;#leeunalineadelarchivo my@lines=<$in>;#leetodaslaslneasylasdejaenelarreglo while(<$in>){#asignacadalneaa$_ print"leyendolalnea:$_"; } printSTDERR"Thisisyourfinalwarning.\n"; print$out$record; print$log$logmessage; close$inordie"$in:$!";

Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Expresiones regulares
Una de las grandes potencialidades de Perl
if(/foo/){...}#trueif$_contains"foo" if($a=~/foo/){...}#trueif$acontains"foo" s/foo/bar/;#replacesfoowithbarin$_ $a=~s/foo/bar/;#replacesfoowithbarin$a $a=~s/foo/bar/g;#replacesALLINSTANCES

Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Expresiones regulares
.asinglecharacter \sawhitespacecharacter(space,tab,newline,...) \Snonwhitespacecharacter \dadigit(09) \Danondigit \wawordcharacter(az,AZ,09,_) \Wanonwordcharacter [aeiou]matchesasinglecharacterinthegivenset [^aeiou]matchesasinglecharacteroutsidethegivenset (foo|bar|baz)matchesanyofthealternativesspecified ^startofstring $endofstring

Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Expresiones Regulares
*zeroormoreofthepreviousthing +oneormoreofthepreviousthing ?zerooroneofthepreviousthing {3}matchesexactly3ofthepreviousthing {3,6}matchesbetween3and6ofthepreviousthing {3,}matches3ormoreofthepreviousthing /^\d+/stringstartswithoneormoredigits /^$/nothinginthestring(startandendareadjacent) /(\d\s){3}/athreedigits,eachfollowedbyawhitespace character(eg"345") /(a.)+/matchesastringinwhicheveryoddnumbered letterisa(eg"abacadaf") #cicloqueleedesdelaentradaestandareimprimelneas #quenoestnenblanco: while(<>){ nextif/^$/;print; }
Jos Urza Reinoso http://jose.cl

Perl
CC51T Desarrollo de Aplicaciones web

Expresiones regulares
Captura de datos con parntesis
if($email=~/([^@]+)@(.+)/){ print"Usernameis$1\n"; print"Hostnameis$2\n"; }

Ejemplo: hora.pl

Jos Urza Reinoso http://jose.cl

También podría gustarte