100
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ Tehnologii Tehnologii Web Web <?xml version=“1.0” ?> <curs desc=“…” /> Tehnologii Web Dr. SabinCorneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/

Web - Perl

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Tehnologii Web

Dr. Sabin­Corneliu BuragaFacultatea de Informatica

Universitatea “A.I.Cuza” – Iasi, Romania

http://www.infoiasi.ro/~busaco/

Page 2: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Programare Web

Perl – o prezentare generala

Detalii in [CGI, 111‐246]

Page 3: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Limbajul PerlCaracterizareSubrutine

Procesarea fisierelorExpresii regulateModule Perl

Conceperea de scripturi CGISuportul pentru bazele de date

Resurse

cuprins

Page 4: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

caracterizare

Practical Extraction and Report Language

Limbaj de programare (compilat/interpretat)

Creat de Larry Wall

20 ani de Perl la 18 decembrie 2007

www.perl.com

Page 5: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

caracterizare

Utilizat initial la prelucrarea sofisticataa informatiilor textuale

Disponibil gratuit sub forma de distributii, pe o multitudine de platforme

(UNIX/Linux, Windows, Mac OS X,…)

Active Perl pentruWindowsPerl oferit de orice distributie de Linux

Page 6: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

caracterizare

Procesari rapide ale textelor de mari dimensiuni

Posibilitati de utilizare a expresiilor regulate

Prelucrarea avansata a resurselor sistemului de operaresi a documentelor XML 

Conectivitate strinsa cu bazele de date

Facilitati pentru realizarea de scripturi CGI

Page 7: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

caracterizare

FilosofiaLucrurile simple sa se realizeze usor, iar cele complexe sa nu fie imposibil

de implementat

Modalitati multiple de programare Perl,in functie de experienta dezvoltatorului de aplicatii

Page 8: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

caracterizare

Modularprogramare procedurala & orientata‐obiect

PortabilExpresiv & puternic – expresii regulate, tablouri si liste, limbaj de sistem(fisiere, procese, socket‐uri,…) etc.

Viteza sporita in dezvoltarea programelorse ofera un compilator‐interpretor

Gratuit

Page 9: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

caracterizare

Disponibilitate:CPAN (Comprehensive Perl Archive Network)http://www.perl.com/CPAN/

Posibilitati de ajutor:man perlperldoc (i.e. perldoc ‐f split)www.perl.com/perlwww.perldoc.comA se vedea si resursele bibliografice de la final

Page 10: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

manualul: sectiuni

perl – o trecere în revistă a documentațiilor Perlperlfaq – răspunsuri la întrebările frecvente despre Perlperlsyn – sintaxa limbajului (vezi şi perlrun – execuțiascript‐urilor Perl, perlfunc – funcții predefinite, perlsub – subrutinele Perl)

perldata – structurile de date Perl (vezi şiperlre – expresii regulate, perldsc – introducere înstructuri de date, perlvar – variabile predefinite) 

perlop – operatorii şi precedența lorperlmod – modulele Perl…

Page 11: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

primul program

#!/#!/usrusr/bin//bin/perlperlfor ($i = 0; $i < 10; $i++) {print ("Salut din Perl!\n");

}

Editare cu orice editor de texte favorit: joe primul.plSetarea drepturilor de executie: chmod +x primul.plInvocarea interpretorului Perl pentru executiaprogramului: perl primul.pl sau ./primul.pl

Obligatoriu in UNIX/Linux!

Page 12: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

sintaxa

Inspirata din limbajul CDelimitatorii intre diverse constructiisunt spatiile albe (spatiul, Tab, newline)

Case­sensitive (perl ≠ Perl)Comentarii precedate de caracterul #Instructiuni terminate de ;Parantezele acolade {} sunt delimitatoride blocuri de instructiuni

Page 13: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

Variabilă = zonă (de obicei contiguă) de memorie în care se stochează o valoare de un anumit tip, zonei fiindu‐Iasociat un nume (identificator al acelei variabile)

Această zonă poate fi publică sau privată, permanentă sautemporară pe parcursul execuției unui program

Numele unei variabile trebuie să înceapă cu o literă şipoate conține caracterele alfa‐numerice şi "_" 

Page 14: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

Scalare (simple)Intregi cu semn, numere flotante, siruri de caractereVariabilele de tip scalar au numele precedat de $Nu trebuie declarate explicit inainte de a fi utilizateImplicit, o variabila numerica are valoarea 0, iar una caracter are valoarea sirul vid "“

$nr_studenti++;$pi = 3.14152965;$limbaj = "Perl";

Page 15: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

Scalare (simple)Variabilele de tip sir de caractere au valori incadrateintre ghilimele sau apostrofuri

$prenume = "Hermann";$nume = 'Hesse';# variabilele vor fi expandate$scriitor = "$prenume $nume";# variabilele nu vor fi expandate$scriitor2 = '$prenume $nume';

Page 16: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri indexate

Liste ordonate de valori scalare (numere, siruri)Elementele listei sunt disponibileprin intermediul unui indice numericNumele variabilelor de tip tablou indexatincepe cu @

Page 17: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri indexate

@limbaje = ("Lisp", "C", "Java", "Perl");@mix = ("Pink", 1974, "Floyd", $pi);$primul_limbaj = $limbaje[0];@primele_3 = @limbaje[0..2]; # sub-tablou

Page 18: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri indexate

Un tablou poate contine elemente eterogene, de tipuri scalare diferitePentru a adauga si sterge elemente la sfirsitulunui tablou, se vor folosi functiile push() si pop()

push (@limbaje, "Prolog"); $eliminat = pop (@limbaje);

Page 19: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri indexate

Aflarea lungimii unui tablou

$nr_limbaje = @limbaje; $nr_limbaje = scalar (@limbaje);

Page 20: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri indexate

Pot fi utilizate si in partea stinga a unei atribuiri($primul, $al_doilea) = @limbaje; ($primul, @restul) = @limbaje; ($studenti, $profesori) = ($absenti, 3);

Elementele se pot ordona cu functia sort()Inversarea unei liste de elemente se poate face cu reverse()

Page 21: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri asociative

Indicele numeric este substituitde un sir de caractere

Liste de perechi (cheie, valoare)Cheile sau valorile nu sunt ordonateVariabilele de tip tablou asociativ sunt prefixatede simbolul %

Page 22: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri asociative

%curente = ("realism" => 4,"expresionism" => 10,"modernism" => 33);

$romane_moderne = $curente{"modernism"};

Page 23: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri asociative

Intre acolade vor fi precizate doar nume de chei, nu valori ale cheilor

Cheile nu pot fi accesate speficind valorile lorintre acolade

O cheie trebuie sa fie unica, dar valorile cheilorpot fi duplicate

Lista cheilor este furnizata de functia keys()Lista valorilor este data de functia values()

Page 24: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri asociative

Functia each() ofera o pereche (cheie, valoare)@lista_curentelor = keys %curente;($curent, $romane) = each (%curente);Inserarea unui element intr‐un tablou asociativse face printr‐o constructie de genul:

# 10 romane baroce$curente{"baroc"} = 10;

Page 25: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

Exemplu de parcurgere a unui tablou asociativ:

while (($curent, $romane) = each (%curente)) {print "Din curentul $curent sunt disponibile

$romane romane.\n";}

Sortarea cheilor – functia sort()

# Lista sortata a curentelor @curente = sort (keys (%curente));

Page 26: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

ComplexeTablouri asociative

Un element se poate elimina cu delete()Existenta unui element se verifica prin exists()

if exists ($curente{"baroc"}) { delete ($curente{"baroc"});

}

Page 27: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

Numele $variabila, @variabila si %variabilase refera la tipuri diferite de variabile sise pot utiliza fara a genera ambiguitati

$pinguini ≠%pinguini ≠@pinguini

Page 28: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

Variabile predefinite$0 numele programului care se executa$_ intrarea implicită sau spatiul de cautare intr‐un sir  @ARGV argumentele furnizate scriptului($ARGV[0] refera primul argument, nu numele programului)

%ENV variabilele de mediu

Page 29: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

tipuri de date

Testarea existentei unei variabile se poate realizacu functia defined()

In mod normal, variabilele vor fi disponibilepe tot cuprinsul programului – domeniul de vizibilitate (scopul) este implicit global

Pentru a face o variabila locala o vom declaracu my sau local

my $scriitor_preferat = "Hermann Hesse";

Page 30: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

operatori

Aritmetici: + ‐ * / % **$unu = 1;$doi = $unu + $unu;$patru = $doi * 2;$doi = $patru / $doi;$opt = $doi ** 3; # 2 la puterea 3$unu = ($opt - $unu) % 2; # restul

De incrementare/decrementare: ++ ‐‐$unu = 1;$doi = ++$unu; # $doi = 2, $unu = 1$doi = $unu++; # $doi = 1, $unu = 2$scriitori++; # $scriitori = $scriitori + 1

Page 31: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

operatori

Destinati sirurilor: x .# un rind de 80 de caractere ~@rind = ('~') x 80;# concatenarea a doua siruri$salut = 'Buna' . 'ziua';

De comparare (relationali):Comparare numere: <, >, <=, >=, ==, !=Comparare siruri: lt, gt, le, ge, eq, ne

De definire a unui interval: ..print (1 .. 33); # de la 1 la 33@combinatii = ('aa' .. 'zz');

Page 32: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

operatori

Logici: and or not$to_be = 1;

$fals = $to_be and not $to_be;$adevarat = (7 > 3) or (3 <= $studenti);

Constructii echivalente: and ≡ &&, or ≡ ||, not ≡ !$fals = $to_be && !$to_be;

Page 33: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

operatori

De test: ?:

print $nume eq "Hesse" ? "E el!" : "Nu-i el!";

De asignare: 

$variabila OP= $valoare; # OP – operator Perl$variabila = $variabila OP $valoare;

Page 34: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

instructiuni

Expresii evaluate pentru efectele lor colateraleFormeaza partea centrala a oricarui program Perl, prelucrind datele stocate in variabile

O secventa de instructiuni formeaza un bloc, delimitat in general intre acolade {}

Fiecare instructiune trebuie terminata de ;In afara de instructiuni, un program mai poatecuprinde declaratii

Tipuri de instructiuni: de asignare, de test, de control

Page 35: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

instructiuni specifice

De test – unlessComplementara lui if

unless ($nr_studenti >= 30) {print ("Cam putini studenti!\n");

} else {print ("Multi studenti la curs:)\n");

}

Constructia else poate lipsi

Page 36: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

instructiuni specifice

Atit if cit si unless pot fi scrise in forma postfixataprint "E chiar el" if $nume eq "Hesse" or

$nume eq "Hermann";

$nr_studenti-- unless $nr_studenti;

Page 37: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

instructiuni specificeDe control 

foreach – utila de obicei pentru iterarea tablourilor@note = (9, 9, 7, 10, 5, 8, 8); foreach $nota ( @note ) { print "$nota\n" unless $nota != 10;

} print "Gata\n";

foreach $curent (sort (keys (%curente))) {print "$curent are $curente{$curent} romane\n";

}Variabila de ciclu este o referință a listei, nu o copiea acesteia (elementele listei se pot altera!)

Page 38: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

instructiuni specifice

De control next

Permite saltul la finalul blocului de instructiuni siinceperea urmatoarei iteratii la un while, do, for,foreach (similar cu continue din C/Java)

for ($grupa = 1 ; $grupa <= 4 ; $grupa++){next if $grupa == 2;print "Grupa: $grupa\n";

}

Page 39: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

instructiuni specifice

De control last

Va finaliza ciclul de instructiuni si va continua cu urmatoarea instructiune dupa blocul deinstructiuni al unui while, do, for sau foreach

foreach $grupa (1 .. 4) {if ($grupa == 2) { last }; print "Grupa: $grupa\n";

}print "Gata!\n";

Page 40: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

subrutine

Grup de instructiuni care poate fi definit deutilizator oriunde in program, cu scopul de a reutiliza codul‐sursaTipuri:

Proceduri – nu returneaza nimicFunctii – returneaza o anumita valoare

Declaratia:sub nume ( parametri ) {

bloc # grup de instructiuni}

Page 41: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

subrutine

Lista de parametri poate lipsi:sub aduna {# lista argum. e disponibila# in variabila @_$primul = shift;$al_doilea = shift;return $primul + $al_doilea;

}

# se apeleaza subrutina (functia) “aduna”print &aduna (2, 7);

Page 42: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

subrutine

Se pot include variabile private (locale) cu mySe pot furniza parametri nedefiniti cu undefParametrii pasati unei subrutine se regasescin variabilele speciale $_ sau @_

Pentru returnarea valorilor se pot folosivariabilele $_ sau @_

Subrutinele se pot apela recursivO paleta larga de subrutine predefinite

Page 43: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

subrutine: predefinite – categorii

Manipularea valorilor scalare: chomp, chop, chr, crypt,hex, index, length, ord, reverse, sprintf, substr, tr,...

Expresii regulate: pos, split, study,...Functii numerice: abs, cos, exp, int, log, oct, rand, sin, sqrt, srand,...

Procesarea tablourilor: pop, push, shift, unshift,...Procesarea listelor: grep, join, map, sort, unpack,...Procesarea tablourilor asociative: delete, each, exists, keys, values

Page 44: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

subrutine: predefinite – categorii

Intrari/iesiri: close, closedir, die, eof, fileno, flock, format, getc, print, printf, read, readdir, seek, tell, truncate, warn, write,...

Fisiere & directoare: chdir, chmod, chown, fnctl, glob, ioctl, link, mkdir, open, opendir, rename, rmdir, stat, unlink,...

Controlul fluxului programului: continue, die, do, eval, exit, goto, last, next, redo, return, sub,...

Controlul vizibilitatii: import, local, my, use,...Procese: alarm, exec, fork, kill, pipe, sleep, wait,...

Page 45: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

subrutine: predefinite – categorii

Acces la retea (socket‐uri): accept, bind, connect, listen,recv, send, shutdown, socket,...

Informatii despre retea: gethostbyaddr, gethostbyname, gethostent, getnetbyaddr, getnetbyname,...

Manipularea timpului: gmtime, localtime, time,...Alte functii utile: defined, dump, scalar, undef,...

Page 46: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

subrutine: predefinite

Majoritatea subrutinelor predefinitesunt considerate drept operatori unari

(nu trebuie utilizate obligatoriu parantezele):

print (sin (3.14));print sin 3.14; echivalente

Page 47: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

fisiere

Fisier: colectie logic contigua de date, stocata pe un mediu (fizic) de memorare

Implicit, se pot utiliza: STDIN – intrarea standard (tastatura)STDOUT – iesirea standard (ecranul)STDERR – iesirea de eroare standard (ecranul)

Citirea datelor se realizeaza cu operatorul <>Scrierea datelor se poate face via functiile obisnuite de afisare (print, printf)

Page 48: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

fisiere: exemplu

print STDOUT "Un nume, va rugam: "; $nume = <STDIN>; print STDOUT "Salut, $nume";

In variabila $nume vor fi stocate caracterele preluate dela intrarea standard, inclusiv newline care marcheazafinalul introducerii sirului de la terminal

Eliminarea caracterului newline: prin chop() sau chomp()

Page 49: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

fisiere

Inainte de a fi utilizat, un fisier trebuie deschis:open (FIL, "nume_fisier");

Citirea din fisier se va realiza cu operatorul <>Scrierea in fisier se va face cu print/printfLa finalul prelucrarii, fisierul trebuie inchis:close (FIL);

Daca nu se specifica nici o variabila, operatiile deintrare/iesire se vor realiza via variabila $_

Page 50: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

fisiere: exemplu

# deschidem fisierulopen (FIL, "lupul_de_stepa.txt");# parcurgem intreg fisierul...while (<FIL>) {

print $_; # afisam linia citita# in variabila $_

}# inchidem fisierulclose (FIL);

Page 51: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

fisiere

Toate functiile uzuale din limbajul C destinatemanipularii fisierelor sunt suportate: seek(), tell(), rename(), chmod(), chown(), lstat(), link(), symlink(), unlink(), ioctl(),…Pentru directoare, se pot utiliza: opendir(), readdir() si closedir()Expandarea continutului unui fisier se realizeazacu <> sau glob()@pagini = <*.html>;@director = glob("/tmp/*");

Page 52: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

erori & avertismente

Pentru a verifica daca anumite functii sau actiunis‐au soldat cu succes ori au cauzat erori,

se pot folosi die() si warn()

open (FIL, "lupul_de_stepa.xml") ordie ("Fisierul nu poate fi deschis");

Codul de eroare se poate capta via variabila speciala $!

Page 53: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

erori & avertismente

Exemplu: dorim sa stergem toate fisiereleordinare stocate in directorul /tmp:

foreach (</tmp/*>) { unlink || warn "Eroare la stergerea $_: $!\n";

}

Page 54: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

cuprins

Expresii regulate *DefinitieOperatori

Meta‐caractereConstructii predefinite

FunctiiExemplificari

* Multumiri lui Victor Tarhon‐Onu

Page 55: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate

Expresie regulata (regular expression)şablon (pattern) caruia, pe baza unor reguli precise, 

i se poate asocia unui text

Variabila implicita în care se realizează diferite acțiuniimplicând expresii regulate este $_

Specificarea altei variabile se face via operatorul =~

Se poate utiliza si !~ (echivalent cu negatia lui =~)

Page 56: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: operatori

Operatorul m//Se foloseşte pentru a căuta un şablon în cadrul unuitext dat – daca nu e pericol de confuzie, litera “m” poate lipsi

Returnează valoarea logică “adevărat” în cazul în carecăutarea se încheie cu succes, “fals” în restwhile (<STDIN>) {print "Am gasit subsirul \"Victor\" in $_" if m/Victor/;

}

Page 57: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: operatori

Operatorul m// (optiuni uzuale)Căutare case­insensitive(majusculele nu diferă de minuscule) – iwhile (<STDIN>) {

print "Am gasit tag-ul \"<b>\" sau \"<B>\" in $_" if /<b>/i;

}Cautarea tuturor secvențele care se potrivesc şablonului – gmy $sir = "a b r a c a d a b r a", $num_a = 0;while ($sir =~ /a/g) { $num_a++; }print "Am gasit de $num_a ori caracterul \'a\'.\n";

Page 58: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: operatori

Operatorul s///Permite căutarea şi substituția unui şablon cu un text

while (<STDIN>) { s/autmat/Automat/i;print;

}

Page 59: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: operatori

Operatorul qr//Precompilează un şir de caractere ca expresie regulată

Expresia regulată precompilată poate fi stocatăîntr‐o variabilă şi refolosită în construcția altor expresii regulate sau poate fi utilizată directmy $expr = qr/(autmat|automt)/i; while (<STDIN>) {

s/$expr/Automat/; print;

}

Page 60: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate

Delimitarea expresiei regulate şi, dacă este cazul, a şirului substituitor se poate realiza cu alte caractere speciale decât "/"

while (<>) { print if m|<pre>|i .. m|</pre>|i;

}

Page 61: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Identificarea caracterelorCautarea unui caracter se realizeaza specificindacel caracter

Pentru cautari complexe, se folosescmeta­caractere= caractere care nu se identifică pe ele însele într‐o expresie regulata

Page 62: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Meta­caracterul .Identifica orice caracter, exceptând newline "\n"

Meta­caracterele [...]Reprezintă o clasă de caractere (enumerare): 

/[a-z]/ /[a-z][ATX][0-7]/

Page 63: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Meta­caracterul ^In cadrul unei secvențe de caractere are rol de negare[^2­5] – toate caracterele exceptind 2, 3, 4, 5

In alte cazuri, desemnează începutul unei linii^[2­5] – orice sir începind cu o cifră cuprinsă între 2 şi 5

Meta­caracterul $Identifica finalul unei linii: /Hesse$/

Page 64: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Meta­caracterul |Alternativa intre doua/mai multe forme posibile:

while (<STDIN>) {print if (/[0-9]|[A-Z][a-z]/);

}

Page 65: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Meta­caracterele ()Grupeaza atomi şi memoreaza valoarea subşirurilordin text corespunzătoare acestor atomi

Atom = caracter lipsit de semnificatie oriun meta‐caracter de pozitionare (^ sau $)

Page 66: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Meta­caracterele ? * + { }Au rolul de multiplicatori ai unui atomUn atom urmat de ? poate identifica de zero saumaxim o singură dată un atom

Simbolul * poate identifica zero, una sau mai multe apariții consecutive ale aceluiaşi atom

Un atom urmat de + poate să identifice măcar o apariție a atomului

Page 67: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Meta­caracterele ? * + { }atom {m, n} va identifica cel puținm atomi, dar nu mai mulți de n

atom {m,} va identificam sau mai mulți atomiatom {,n} va identifica n atomi cel multatom {n} va identifica exact n atomi

{1,} ≡ +  {0,} ≡ *  {0,1} ≡ ?

Page 68: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: meta‐caractere

Meta­caracterele ? * + { }

while (<STDIN>) { print "Cel putin o aparitie a cuvintului \'web\'

la inceputul liniei\n" if (/^(web)+/);

}

Page 69: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: constructii

\d o cifra: [0‐9]\w un caracter alfanumeric: [0‐9_a‐zA‐Z]\s un spatiu alb: [\t\r\n\ \f ]\D orice exceptind cifre: [^0‐9]\W caracter ne‐alfanumeric: [^0‐9_a‐zA‐Z]\S orice exceptind spatii albe: [^\t\n\r\ \f]\b limitele unui cuvint\B orice alt context decât limitele unui cuvânt(interiorul unui cuvânt)

\A începutul unui şir\Z sfârşitul unui şir

Page 70: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: functii

Functia tr///Translateaza caracter cu caracter un text

tr/A-Z/a-z/ # majusculele devin minusculetr/http:/ftp:/ # http: devine ftp:

Page 71: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: functii

Functia split()Imparte un şir de caractere în funcție de o expresieregulată şi returnează un tablou conținândsubşirurile care nu satisfac acea expresie regulată

$data_sistem = localtime (time);($ziua, $luna, $num, $timp, $an) = split(/\s+/, $data_sistem);

Page 72: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: functii

Functia join()Reuneşte mai multe şiruri de caractere în unul singur,delimitate de un scalar

Functia eval()Poate fi folosită la evaluarea/execuția unei expresii Perl

Returneaza valoarea ultimei expresii evaluate

Page 73: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate

Alte detalii in articolul “Expresii regulate in Perl” de S. Buraga si V. Tarhon‐Onu, NET Report, 

vol. 11, 09 (120), sept. 2002: www.infoiasi.ro/~busaco/publications/articles/regexp.pdf

Page 74: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

expresii regulate: exemplu

Verificarea validitatii unei adrese de e‐mail:

sub valid_email { $testmail = shift; return 0 if ($testmail =~ / /); if ($testmail =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $testmail !~

/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/) { return 0;

} else { return 1; }

}

Page 75: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

module

Modul: unitate de cod precompilat,incapsuland diferite functionalitati oferite programatorilor

Se stocheaza in fisiere cu extensia .pm, codul putand fiutilizat ulterior, fara “reinventarea rotii”

Modulele se includ in program prin use Modul;

In mod uzual, fiecare modul are propria lui documentatie,disponibila prin man sau perldoc

Page 76: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

module

Module standard (exemple):CGI – pentru scrierea de scripturi CGI File – pentru prelucrarea facilaa fisierelor/directoarelor

Math – pentru operatiuni matematice(e.g., calcule cu numere complexe)

Socket – pentru programarea in retea (Internet)

Page 77: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

module

Colectia globala de module folositoare: CPAN (Comprehensible Perl Archive Network)www.perl.com/CPAN/Programare de sistemTipuri de date & conversiiConectivitate cu bazele de dateProcesarea caracterelor, textelor, imaginilor etc.Suport pentru Internet & WebPrelucrarea diverselor tipuri de resurse(documente XML, foi de calcul Excel, arhive ZIP,...)

Instrumente de documentare...

Page 78: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

module

Unele module se pot baza pe altele, constituind ierarhii

Exemple: File::Find – traversarea unui arbore de directoareHTML::Parser – prelucrarea doc. HTMLMath::Complex – lucrul cu numere complexeSearch::Dict – cautarea unei chei dintr‐un dictionarXML::Parser – utilizarea analizorului XMLXML::XSLT – transformari XSL …

Page 79: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Scop:ofera rutine/metode pentru dezvoltarea comoda

a script‐urilor CGI

modulul CGI

Page 80: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Generare de cod HTML – maniera procedurala:

#!/usr/bin/perl

use CGI qw/:standard/; # utilizare CGI standard

print header(); # trimitem antetul HTTP# afisam antetul paginii Webprint start_html(-title => "Un salut");print h1('Salut!'),

p('Un paragraf...'); # diferite elemente HTML# afisam finalul de documentprint end_html();

modulul CGI

Page 81: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Generare de cod HTML – maniera obiectuala:

#!/usr/bin/perl

use CGI; # utilizam modulul CGI

$c = new CGI; # instantiem obiectul CGIprint $c->header(); # trimitem antetul HTTP# afisam antetul paginii Webprint $c->start_html(-title => "Un salut");print $c->h1('Salut!'),

$c->p('Un paragraf...'); # diferite tag-uri HTML# afisam finalul de documentprint $c->end_html();

modulul CGI

Page 82: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Preluarea parametrilor transmisi script‐ului:Se foloseste param()

@parametri = $c->param(); # lista parametrilor disponibiliprint “@parametri”;$nume = $c->param('nume'); if ($nume != 'Admin') {print '<p>Nume incorect...</p>';

}

modulul CGI

Page 83: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Redirectarea clientului:# redirectare in functie de limbaif ($limba eq 'ro')

print $c->redirect('/index.ro');else

print $c->redirect('/index.en');

Trimiterea antetului HTTP:# trimite Content-type: image/pngprint $c->header('image/png');

modulul CGI

Page 84: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Alte metode: query_string() – sirul de interogare pt. GETremote_addr() – adresa IP a masinii‐clientremote_host() – adresa simbolica/domeniul clientuluirequest_method() – cererea HTTP realizatauser_agent() – informatii privitoare la browsercookie() – acces la cookie‐uri

modulul CGI

Page 85: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Alte functii utile: escape() – genereaza un sir codificat in stilul URI (caracterele speciale sunt substituite de %NN)

unescape() – decodifica un sir codificatcu functia escape() 

escapeHTML() – genereaza un sir codificat in stilulHTML (caracterele speciale sunt inlocuitecu entitatile &lt; &gt; &amp; in loc de < > &)

unescapeHTML() – decodifica un sir codificatcu escapeHTML()

modulul CGI

Page 86: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Afişarea unei imagini aleasa aleatoriu:

#!/usr/bin/perl# reda continutul unui fisier graficuse CGI qw/:standard/;# constante folosite pentru specificarea# directoarelor care contin imagini$DIR_RADACINA = '.';$DIR_IMAGINI = 'img';chdir "$DIR_RADACINA/$DIR_IMAGINI" or die "direct. de imagini e inaccesibil.";

# preluam fisierele JPEG, GIF si PNG@imagini = <*.{jpg,gif,png}>;

modulul CGI: exemplu

Page 87: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Afişarea unei imagini aleasa aleatoriu – continuare:

# alegem imaginea$imagine = $imagini [rand (@imagini)];die "eroare la selectarea imaginii"

unless $imagine;# redirectam navigatorul

print redirect ("$DIR_IMAGINI/$imagine");

modulul CGI: exemplu

Page 88: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Pentru procesarea continutului HTML: modululHTML::Parser

Pentru preluarea continutului resurselor Web: modulul LWP (Library for Web access in Perl)

Pentru redirectarea mesajelor de eroare spre un fisierde jurnalizare ori spre browser: modulul CGI::Carp

use CGI::Carp qw(fatalsToBrowser);die "O eroare intentionata...";

alte module utile

Page 89: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

modulul DBI

Asigura independența de arhitectura internă şimodul de comunicare cu sistemele de gestiune a bazelor de date relaționale

Componente:interfața de programare DBI (ofera suport la nivel înalt pentru diferite operații cu baze de date)

driver‐e (asigură modalitatea efectivă de conexiune la un server de baze de date particular)

Page 90: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

modulul DBI

Arhitectura:

Page 91: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

modulul DBI

Interactiunea cu un server de baze de date se realizeaza via descriptori (handlers):Driver handler – reprezinta driver‐ul asociatunui sistem de baze de date relationale(MySQL, PostgreSQL, Oracle etc.)

Database handler – specifica o conexiune unicala o baza de date particulara stocate de un server

Query handler – reprezinta o interogare (comanda) SQL ce va fi executata asupra unei baze de date

Page 92: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

modulul DBI

Operatii cu baze de date (MySQL):Conectarea: connect ($masina, $baza, $utiliz, $parola)

use Mysql; $dbh = Mysql->connect (‘localhost’, ‘studenti’,

‘tux’, ‘P@roLa’);$mesaj_eroare = Mysql->errmsg();

Page 93: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

modulul DBI

Operatii cu baze de date (MySQL):Interogarea: query ($sql)

$qh = $dbh->query (‘select * from stud’);# numarul de inregistrari obtinute$inreg = $qh->numrows ();

Page 94: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

modulul DBI

Operatii cu baze de date (MySQL):Accesul la inregistrarile obtinute: fetchrow_array ()fetchrow ()fetchhash ()

while (@inreg = $qh->fetchrow_array()) { print ("Studentul: " . $inreg{‘nume’} .

" are nota " . $inreg{‘nota’} . "\n");}

Page 95: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

modulul DBI: alte metode

listtables() – furnizeaza tabelele unei baze de datelistfields() – furnizeaza numele campurilor dintr‐o tabelaprepare() – pregateste o comanda SQL spre a fi executataexecute() – executa o comanda SQLfinish() – finalizeaza o comanda SQLdisconnect () – intrerupe conexiunea

Page 96: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

instrumente

Apache2Triad – mediu pre‐configurat de dezvoltareWeb (Apache, Perl, MySQL,…)

ActivePerl – distributia Perl consacratapentru sistemele Windows

Mason – modul Perl folosit pentru dezvoltareade aplicatii Web

mod_perl – modul Apache ce include suportulPerl (CGI) direct in serverul Web

Apache::ASP – suporta “scufundarea” constructiilor Perl in paginile Web (ca la PHP)

Page 97: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

R. Schwartz, T. Christiansen, Learning Perl (2nd Edition), O’Reilly, 1997

L. Wall et al., Programming Perl (3rd Edition),O’Reilly, 2000 

S. Buraga, V. Tarhon‐Onu, Ş. Tanasă, ProgramareWeb în bash şi Perl, Polirom, 2002

S. Buraga, Tehnologii XML, Polirom, 2006

L. Alboaie, S. Buraga, Servicii Web, Polirom, 2006

resurse

Page 98: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Situl Perl oficial: www.perl.com/Situl Perl al dezvoltatorilor: www.perl.org/

Perl Monks: www.perlmonks.com/Perl Month: www.perlmonth.com/The Perl Journal: www.tpj.com/

resurse

Page 99: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Limbajul PerlCaracterizareSubrutine

Procesarea fisierelorExpresii regulateModule Perl

Conceperea de scripturi CGISuportul pentru bazele de date

Resurse

rezumat

Page 100: Web - Perl

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

??