Lenguaje PERL - Carreras de Sistemas - UARG

Transcripción

Lenguaje PERL - Carreras de Sistemas - UARG
!
Docente:
Albert A. Osiris Sofía
1º Cuatrimestre 2002
1
&
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Lenguaje PERL
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
2
1
Contenido de la Presentación
!
• Lenguaje Perl
3
&
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Programación CGI usando Perl
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
2
Contenidos
Breve introducción a Perl
Técnicas útiles
Ejemplo CGI
!
Links
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Perl
&
¾Perl es un lenguaje de programación de
alto nivel
¾Ventajas:
–Desarrollo rápido (lenguaje interpretado)
–Lenguaje portable entre plataformas (Unix,
Linux, Windows, etc).
–Ejecución más rápida que la de los scripts
–Existen numerosas librerias gratuitas
(desarrollo colaborativo)
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
3
Ventajas (II)
Lenguaje de entrada y salida práctico
Mezcla entre C y Shell Scripts
Ejecución secuencial de sentencias
No existe el concepto de rutina principal
!
•
•
•
•
7
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Características Principales
&
1. Expresiones regulares básicas (regex)
Las regex de Perl tiene el siguiente formato:
$nombre=~/Pedro/
Lo cual significa que si el texto “Pedro” se
encuentra dentro de $nombre, se devuelve el valor
TRUE
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
4
Ejemplo
$_='Mi email es <[email protected]>.';
/(<robert\@netcat.co.uk>)/i;
print “Encontrado ! $1\n";
!
Salida:
Encontrado ! <[email protected]>
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Split (desdoblamiento)
&
$_='Piper:PA-28:Archer:OO-ROB:Antwerp';
@details=split /:/, $_, 3;
foreach (@details) {
print "$_\n"; }
Salida:
Piper
PA-28
Archer:OO-ROB:Antwerp
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
5
Operación con Archivos
$archivo="c:\scripts\archivo.txt";
open STUFF, $archivo;
!
while (<STUFF>) {
print "Linea numero $. is : $_";
}
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Ejemplos
&
@ARGV="c:/scripts/salida.txt";
$^I=".bk";
while (<>) {
tr/A-Z/a-z/;
print;
}
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
6
Arrays Asociativos
%myhash
Key Value
ES Spain
BE
Belgium
DE Germany
!
@myarray
Vs
Index Value
0
Spain
1
Belgium
2
Germany
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Ejemplo
&
%paises=('NL','The Net herlands', 'BE', 'Belgium',
'DE','Germany','MC','Monaco','ES','Spai
n');
print “Ingrese el código de país:";
chop ($encontrar=<STDIN>);
$encontrar=~tr/a-z/A-Z/;
print "$paises{$encontrar} tiene código
$encontrar\n";
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
7
Ejemplo CGI
Web Server
(Web Professional)
query the databa
and get the resu
2.
Database
Oracle 8
changetheresultstoHTMLformat
4
3
2
form
requested
by learner
Query
template+Code
.... HTML form ....
login.pl
vc_
i ndex.html
Scripts
bP
ag
e
vc
1. Request server/
http://pc89075.cse.cuhk.edu/
vc_index.html
_in
de
x.h
Ac
tm
/ i n tio
l
p u n =l
o
t l "g
og in
4.
i n . "p l
Re
da
su
lt P
ta
ag
e
3.
passing CGI strings to
script and activate it
Disk
Network
We
Documents
!
Learner/brows
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Archivos HTML y Perl
&
<html>
<head>... </head>
<body>...
<form method="POST"
action="/cgi-v c/login_2.pl">
<input type="passw ord"
name="password">...
</form>
</html>
read (STDIN, $login_raw ,
$ENV{'CONTENT_LENGTH'});
%logindata=split (/[&=]/, $login_raw );
foreach (keys %logindata)
{
$logindata{$_}=~s/%([\dA-Faf]{2})/chr(hex $1)/ge;
$logindata{$_}=~s/\+/ /g;
}
$logid=$logindata{'login'};
$passw d=$logindata{'passw ord'};
...
print "Content-type: text/html\n\n";
print "<html><body>\n";
...
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
8
Links
Sitio oficial de Perl:
http://www.perl.org/
Tutorial de Perl:
http://www.netcat.co.uk/rob/perl/win32perltut.html
!
Ten Perl Myt hs
http://www.perl.com/pub
ActiveSate Tool Corp.
http://www.activestate.com
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
&
Detalles de la Programación PERL
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
18
9
Generalidades
Tipos de Datos
Principios de I/O.
Operadores lógicos y aritméticos
Expresiones regulares
Sentencias de control de flujo
Funciones predefinidas
!
•
•
•
•
•
•
19
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Tipos de Datos
&
• 3 tipos de datos básicos
– Escalares.
– Array indizado de escalares
– Arrays asociados de escalares (hashes).
• Los escalares pueden ser numéricos, tipos
string o booleanos
• No es necesario definir el tipo para una
variable
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
20
10
Tipos de Datos (II)
• El tipo de datos se indica mediante un
caracter especial
–
–
–
–
$ para escalares.
@ para arrays indexados.
% para arrays asociativos (hashes).
& para funciones.
!
• Cada tipo de datos posee su propio espacio
de nombres
21
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Literales Numéricos
&
• Existen diversas formas:
$a = 515
$b = 2.5
$c = 2.5E15
$d = 0x5A25
$e = 0555
$f = 5_255_515
#enteros
#punto flotante
#notacion científica
#hexadecimal
#octal
#para legibilidad
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
22
11
Literales String
• 2 tipos:
– “…” para interpolación de variables
– ‘…’ para strings fijos
• `…` usado para ejecutar un shell script y
obtener su resultado.
• Ejemplo:
!
$animal = ‘tigre’;
$message = “Salve al $animal”;
$message = ‘Salve al $animal’;
$fecha = ‘date’;
23
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Variables Escalares
&
• No se requiere una definición o
inicialización especial.
• La interpretación como número o string
depende del contexto
• Los operadores brindan el contexto para
esa interpretación
Ej. $num = “123”;
print $num + 3, “\n”, $num, “\n”;
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
24
12
Arrays Indexados
• Lista de escalares
Ej. @marks indica el array completo
!
• Los índices comienzan en 0.
• $marks[1] es el 2º elemento del array.
• $#marks devuelve el número de el ementos
del array.
• array variables especiales: @ARGV, @INC
25
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Arrays Indexados - Ejemplos
&
• Ejemplos:
@marks = (45,55,65 );
#inicializa array
@marks = ( );
#inicializa array
@foo = @bar;
#copia array
@foo = @bar[2..5]
#copia subarray
($x,$y,$z) = @games;
#asigna valores a variables
($alp,$beta) = ($beta, $alp); #intercambia valores
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
26
13
Arrays Asociativos - Hashes
• Pares de claves-valores no ordenados
Ej. %esposa indica el hash completo.
• El valor se accede usando la clave asociada
!
Ej. %esposa = { ‘amitabh’,’jaya’,’rajiv’,’sonia’,’ram’,’sita’}
$esposa{’amitabh'} = ‘jaya’;
27
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Hashes (II)
&
• Las funciones keys & values devuelven
arrays indexados de los indices y los
valores respectivamente
• El operador each se usa para iterar a
través del hash para recuperar un par de
valores cada vez
• Array hash especial : %ENV
eg. $ENV{‘PATH’} = “/user/home/xyz”
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
28
14
Gestión de Archivos
!
• Nombre de variable usada para acceder a
un archivo o dispositivo
• Se accede a un archivo utilizando la función
open
• El tipo de acceso se puede especificar en la
función open
• Manejadores predefinidos: STDIN,
STDOUT, STDERR.
29
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Ejemplos de Manejadores de
Archivo
&
• Ejemplo:
open( FILEHANDLE, “archivo”);
“< archivo”
read mode
“> archivo”
write mode
“>> archivo” append mode
“| archivo”
O/P pipe
“archivo |”
I/P pipe
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
30
15
Principios de I/O
• Entrada desde Manejadores de Archivo
– $a = <STDIN>;
chomp ($a); # elimina el trailing ‘\n’, si existe
– $line = <LOG>;
• Entrada desde el operador <>
!
– Toma la información desde el archivo
especificado en el programa
– while (<>)
{ print $_; }
31
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Principios de I/O (II)
&
• Salida a STDOUT -
print “Sum = ”, 2+3;
printf “%10s %5d\n”, $string, $num;
• Salida a otro manejador de archivos
print LOG “algun registro”, “\n”;
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
32
16
Operadores
• Aritméticos -
+, -, *, /, %, **, ++, --, +=, -= etc.
• String -
Concatenación (.), replicación (x) etc.
• Rangos • Bits -
!
No-inclusive (..), Inclusive (...)
And (&), Or (|), Xor (^), Not (~)
33
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Operadores Lógicos
&
• 0, string nulo (“”, ‘’), o ‘0’ es fal se, lo
contrario es true booleano.
• and (&&), or (||), complemento (!)
• Operador If-then-else (?:)
ej. $a = condición ? $b : $c;
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
34
17
Operadores de Comparación
==
!=
<
>
<=
>=
eq
ne
lt
gt
le
ge
!
Equal
Not equal
Less than
Greater than
Less than or equal to
Greater than or equal to
35
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Expresiones Regulares
&
• Coincidencia de patrones while (<>) {
if ($_ =~ /abc/) {
print $_;
}
}
• Sustitución usando expresiones regulares
$var =~ s/abc/def/g;
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
36
18
Expresiones Regulares (II)
• Patrones de un único caracter –
–
–
–
.
[abc]
[0-9]
^
:
:
:
:
un caracter simple excepto enter
un caracter simple de un conjunto
cualquier caracter de una clase
clase negada
• Clases predefinidas:
:
:
clase dígitos
clase palabras [a-zA-Z0-9]
clase espacios [ \r\t\n\f]
!
– \d
– \w
– \s
37
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Estructuras de Control
&
• Bloques de Estructur - delimitados por {}.
• El ; final es opcional (por clarificación)
• Sentencias de control de flujo
– if / unless
– while / until
– for / foreach
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
38
19
if / unless
• Syntaxis (if) – if (EXPR) BLOQUE else BLOQUE
– if (EXPR) BLOQUE elsif (EXPR) BLOQUE else
BLOQUE
ej. if ($num > 100) { print "100 items vend.\n"; }
!
• Syntax (unless) - unless (EXPR) BLOQUE
ej. unless ($day eq “Domingo") { print “Trabajo";
}
39
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
while / until
&
• Syntaxis (while) -
– while (EXPR) BLOQUE
– do BLOQUE while (EXPR)
while (@ARGV) {
$next = shift @ARGV;
}
print "next";
• Syntaxis (until) -
– until (EXPR) BLOQUE
– do BLOQUE until (EXPR)
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
40
20
for / foreach
• Syntaxis (for) for (initial EXPR; test EXPR; re-init EXPR) BLOQUE
ej. for ($i = 1; $i <=10; $i++) {
print $i;
}
• Syntax (foreach) -
!
foreach $i (@lista) BLOQUE
ej. foreach $a (@st d_list) {
print $a;
}
41
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
next, last, redo
&
• next permite saltar al final de la iteración
• last permite saltar al final de un bloque
• redo permite saltar al inicio del bloque.
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
42
21
next, last, redo - Ejemplo
!
while (condicion_1) {
#sentencias
if (condicion_2) {
#hace algo
#next, last, redo van aquí
}
#mas sentencias
}
43
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Funciones (open, close, die, warn)
&
• open y close
open (LIST, “wordlist.txt”);
close (LIST);
• die y warn
open (LIST, “wordlist.txt”) || die “No se puede”;
unless (filename) warn “Archivo vacio”;
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
44
22
Funciones (chop, chomp)
• chop - chops eliminan el ultimo caracter de un
string
$val = “ABCDEFGHIJKLMN”;
chop($val); # “ABCDEFGHIJKLM”
$val = chop($val); # “M”
!
• chomp - removes whatever input record
separator $\ is set to. By default it is ‘\n’.
$val = <STDIN>;
chomp($val);
45
&
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Conclusiones
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
46
23
Conclusiones
!
• Perl NO reemplaza a los CGI
• Perl complementa la programación de
scripts
• Permite portabilidad
47
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
Próxima Clase
&
• Diseño de Bases de Datos
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
48
24
Bases de Datos
!
Clase Nº 4
49
&
Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos
25

Documentos relacionados