Sunteți pe pagina 1din 6

Lucrarea 1

Lucrarea 1
Intro Limbajul Perl este un limbaj de programare de nivel nalt, interpretat, ini ial dezvoltat de Larry Wall n 1987. Limbajul Perl a fost dezvoltat pentru prelucrarea de texte i generarea de rapoarte, de aici acronimul: Practical Extraction and Report Language. Limbajul mprumut caracteristici ale limbajelor C, Pascal, AWK, sed, sh i chiar BASIC. Perl este un limbaj portabil, rulnd n peste 100 de platforme de la sisteme portabile la sisteme distribuite. Perl a fost folosit de la nceputurile Web-ului n programarea dinamic a site-urilor utiliznd protocolul CGI. Pe lng Python i PHP, Perl este unul dintre cele mai populare limbaje folosite n dezvoltarea site-urilor dinamice. Site-uri populare ca imdb.com, bbc.co.uk, amazon.com, booking.com sau dslreports.com au fost realizate cu ajutorul perl-ului sau mod_perl-ului. Pe sistemele UNIX limbajul Perl este de obicei preinstalat deoarece numeroase utilitare Linux/Unix au fost implementate n Perl. Pentru sistemele Microsoft Windows, interpretorul Perl poate fi obinut de pe site-ul http:/ /www.activestate.com sau http://strawberryperl.com/. De asemenea, Activestate pune la dispoziie i un mediu integrat de dezvoltare (IDE) sub numele de Komodo, disponibil i n variant gratis. Un simplu program Perl arata astfel: print "Hello World.\n"; Observatie: Limbajul Perl este un limbaj case-sensitive. De obicei programele sunt salvate n fi iere cu extensia .pl. Rularea programului fcndu-se cu ajutorul interpretorului Perl astfel: >perl hello_world.pl Perl dispune de o documentaie bogat, comanda perldoc oferind acces la tutoriale, definiii i sintaxe ale funciilor de baz. Aceast documentaie poate fi consultat i online accesnd: http://perldoc.perl.org. Exemple de accesare a documentaiei din consol (terminal): >perldoc perl - pagina principal de documentaie >perldoc perltoc - cuprinsul documentaiei perl >perldoc -f print - documentaia pentru funcia print ( -f de la function :))

Structura unui program in perl. Un program perl ncepe de obicei cu includerea unor module sau unor optiuni de interpretare. Pentru ca interpretorul sa afiseze mesajele "warning" la intepretare se va utiliza directiva "use warnings;" la inceputul fiecarui fisier sursa. Comentariile in perl incep cu "#". Pe orice linie, orice caracter dupa caracterul # este considerat comentariu. Pentru a comenta un bloc de cod, se va utiliza combinatia "=pod / =cut". Interpretorul perl considera ca linia care contine doar "=pod" marcheaza inceputul unei documentatii (comentariu) si linia care contine "=cut" marcheaza sfarsitul aceste zone de documentatie. Astfel, exemplul de mai sus devine: # linia urmatoare spune interpretorului sa afiseze # mesaje de atentionare use warnings; print "Hello World.\n"; =pod comentarii documentatie etc. =cut print 'Hello World\n', "\n"; Blocurile de cod n perl sunt delimitate ca n C, utiliznd {}. { print "Acesta este"; $p = $p + 1; print " un bloc de cod.\n"; }

Tipuri de date Perl dispune de trei tipuri de date fundamentale: scalar, array i hash. Scalarii pot conine o singur valoare. Aceast valoare poate fi un ntreg, un real, un caracter, un string sau o referin. Numele variabilelor scalare ncep ntotdeauna cu caracterul

($)

$.
$nume = "Petru"; $adresa = "str. Paltinis nr. 4";

$varsta = 21; $medie = 9.7; print "Medie: ", $nume, " Medie: ", $medie, "\n"; Mail multe despre scalari: http://perldoc.perl.org/perldata.html

(@) Array-urile

sunt colectii organizate de valori scalare, numele unei variabile array

ncepe ntotdeauna cu caracterul @. Indexul de pornire ntr-un array este 0, la fel ca n limbajul C. Dimensiunea unui array n perl este limitat doar de memoria de care dispune sistemul pe care ruleaz interpretorul.

Atentie !, cand se va face referire la o anumita valoare dintr-un array se va utiliza caracterul $: @numbers = (1,2,3,4); print $numbers[2]; @elevi = ("Petru", "Carmen", "Marius"); @colectie = ("Petru", 9.7, "Carmen", 8, "Marius", "Angela", 'c'); print $elevi[0]; print $elevi[-1]; #primul element din lista @elevi. #ultimul element din lista elevi.

print scalar(@elevi); #numarul de elemente print $#elevi; #indexul maxim dintr-o lista (scalar(@elevi)-1)

(%)Hash-urile (sau listele asociative) conin o colecie neordonat de perechi cheie/valoare. Numele variabilelor hash ncepe ntotdeauna cu caracterul %. Cheile sunt ntotdeauna string-uri
unice, valorile pot fi doar scalari. La fel ca pentru array-uri, dimensiunea unui hash este limitat doar de memoria de care dispune sistemul pe care ruleaz interpretorul.

%situatie = ("Petru", 9.7, "Amalia", 9.8, "Dan", 9); %situatie = ( "Petru" => 9.7, "Amalia" => 9.8, "Dan" => 9 ); print $situatie{"Dan"}; # valoarea pentru cheia Dan print keys(%situatie); print values(%situatie); ($cheie, $valoare) = each %situatie; # returneaza o pereche cheie-valoare din hash

# mutand cursorul in hash pe pozitia urmatoare.

Lucrul cu scalari Perl suport scrierea numerelor n mai multe baze de numeraie: decimal, binar, octal sau hexadecimal. use warnings; print 255,"\n"; # decimal print 0377,"\n"; # octal print 0b11111111,"\n"; # binar print 0xFF,"\n"; #hexa

n perl exist doua tipuri de string-uri. Diferena dintre ele este modul n care interpretorul evalueaz aceste string-uri: string-urile "single quoted" sunt stringuri care nu suport interpolare. Mai exact, interpretorul nu va ine cont de caracterele de control aflate n aceste string-uri sau de numele de variabile, el va afia aceste string-uri exact aa cum sunt scrise n codul surs. string-urile "double quoted" suport interpolare iar caracterele de control i numele variabilelor vor fi nlocuite de ctre interpretor de tab-uri sau caractere linie nou, etc. respectiv valorile variabilelor ale cror nume apar n string-uri. use warnings; $a = 12; print 'Valoarea lui $a '; $a = $a + 2; print "este $a\n"; print 'Linia 1\n$a\nLinia 2\n'; print "Linia 1\n$a\nLinia 2\n"; $nume = 'GEORGESCU'; $prenume = 'Dan'; $salut = "Hello $prenume $nume"; print "$salut"; Pentru citirea variabilelor de la tastatur, in perl se va folosi stream-ul de intrare STDIN astfel: $a = <STDIN>; print "S-a citit $a de la tastatura.\n";

Observaie: Orice variabil citit de la tastatur va conine la sfrit caracterul "\n". Daca valorile citite se folosesc in context numeric, interpretorul perl va ignora automat caracterul "\n" de la capatul numerelor dar in cazul sirurilor de caractere, acest caracter se pastreaza si poate deranja afisarea corecta a datelor. Pentru a indeparta acest caracter se va folosi functia chomp. use warnings; $nume = <STDIN>; print "Elevul $nume a intrat in clasa.\n"; chomp($nume); print "Elevul $nume a intrat in clasa.\n"; # pentru documentatia functiei chomp folositi comanda: # perldoc -f chomp intr-un terminal.

Exemple de expresii condiionale if (EXPR) BLOCCOD if (EXPR) BLOCCOD else BLOCCOD if (EXPR) BLOCCOD elsif (EXPR) BLOCCOD ... if (EXPR) BLOCCOD elsif (EXPR) BLOCCOD ... else BLOCCOD INSTRUCTIUNE if (EXPR) BLOCCOD este o grupare de instruciuni aa cum s-a aratat mai sus: { print "This is a string\n"; $a += 34; chomp($citire); } Primul exemplu arat o form destul de comun de utilizare a expresiei IF. Spre deosebire de limbajul C, n limbajul Perl scrierea acoladelor este obligatorie, chiar dac dup condiie urmeaz o singur instruciune. if ($a == $b) { print "Egalitate"; } Exemplul urmtor prezint o form cu mai multe condiii n acelai bloc condiional. Se observ utilizarea mai multor cuvinte cheie elsif(EXPR) urmate de blocul else. Aceast form este foarte asemntoare cu instruciunea switch din C. if ($a < 0) { print "Negativ\n"; } elsif ($a == 0) { print "Nul\n";

} elsif ($a =~ m/[a-z]/i) { print "String\n"; } else { print "Pozitiv\n"; } Pentru cazul n care dup testarea expresiei urmeaz o singur instruciune se poate utiliza forma invers a expresiei IF: print "BLA\n" if (!$a);

S-ar putea să vă placă și