Stocarea si rularea programelor Perl. Exemplul Hello World. Continutul fisierului hello este: # !/usr/local/bin/perl -w if( $#ARGV >= 0) {$who = join(' ', @ARGV); } 23675vll37tty6l else {$who = 'World'; } print "Hello, %who! \n";
Presupunem ca programul de mai sus este stocat in fisierul Unix ~/bin/hello. Programul poate fi rulat cu una din comenzile: lt675v3237ttty perl ~bin/hello perl ~bin/hello oameni perl hello (daca ne aflam in directorul ~/bin). Pentru executarea acestui program ca si o comanda, trebuie parcursi urmatorii pasi: Prima linie din program trebuie sa contina dupa #! calea spre comanda perl, asa cum s-a aratat si in exemplul de mai sus. Totodata in aceasta linie se pot specifica si optiuni de comanda, de exemplu -w (warnings - avertismente). Pentru a permite citirea si executarea fisierului de catre toti utilizatorii trebuie introdusa comanda Unix: chmod a+rx ~/bin/hello
Se editeaza fisierul ~/.cshrc sau ~/.login pentru a aduga directorul bin in calea de cautare a fisierelor executabile. In aceste fisiere se adauga o linie in genul: set path = ($path ~/bin) Dupa acestea, programul se poate lansa in executie tastand hello.
6. Elemente Perl Structurile de date in Perl. Scalari pot valori numerice sau caractere, determinate de contextul in care apar. Exemple: 123 12.4 5E-10 0xff (valoare hexazecimala) 0377(valoare octala) ' Eu sunt $nume si sunt in anul \n 2' "Ce mai faci?" "Inlocuirea valorilor $x si \n in \" ghilimele." `date` uptime -u` $x $lista[5] $tabela('key')
Ghilimelele simple ' ' permit doar inlocuirea in textul cuprins intre ele a semnelor \\ si \. Ghilimelele duble " " permit inlocuirea in textul cuprins intre ele si a variabilelor gen $nume si a caracterelor de control gen \n (linie noua). Ghilimelele intoarse ` ` permit toate inlocuirile de mai sus , dupa care incearca sa execute sirul rezultat ca si o comanda sistem si intorc textul afisat de sistem ca urmare a executiei comezi reprezentate de sirul de caractere. Sirurile de scalari ( numite si liste) reprezinta scalari aranjati secvential. Exemple: ('Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sambata', 'Duminica') (1,2,3,4,5,6,7,8,9) echivalent cu (1..9) (1,2,3,4,5,6,7) [2,4] echivalent cu (3,4,5) @Lista
Sirurile asociative, ajuta la retinerea anumitor lucruri des folosite: Exemple: $ZileInLuna('Ianuarie') = 31; $Student('Muresan Robert') = 1; $NumeStudent{28602} = 'Muresan Robert'; $Nota($NrStudent, $NrExamen) = 10; %lista_intreaga
Perl 5 permite permite combinarea celor mai de sus, cum ar fi liste de liste sau siruri asociative de liste. Conventii de notare in Perl. Numele variabilelor scalare incepe cu $, chiar si atunci cand ne referim la un element dintr-o lista. Numele variabilelor care reprezinta liste incepe cu @, iar numele unei variabile care se refera la o lista asociativa incepe cu %. Listele sunt indexate cu paranteze patrate [] si contin inchis intre ele un indice, indexarea incepand cu [0] (ca si in C). In Perl 5 indicii negativi inseamna indexare de la capatul listei. De exemplu $Zile[5] este al saselea element al element al listei @Zile si ('Luni','Marti','Miercuri')[1] este egal cu 'Marti'
Listele asociative sunt indexate cu paranteze rotunde () care cuprind intre ele un sir de caractere. $var, @var si % var sunt 3 variabile distincte. @zile = (31,28,31,30,31,30,31,31,30,31,30,31); # o lista cu 12 elemente $#zile # Ultimul indice din lista zile; 11 in acest caz $#zile = 7; # Trunchiaza sau extinde lista zile la 7 elemente @zile # ($zile[0], $zile[1],...) @zile[3,4,5] # = (30,31,30) @zile('a', 'c') # echivalent cu ($zile{'a'}, $zile{'c'}) %zile # (cheie1, valore1, cheie2, valoare2,...)
Limbajul Perl este case sensitive, astfel $VAR, $Var si $var reprezinta 3 variabile distincte. Daca primul caracter dupa simbolurile $,%, sau @ este un caracter sau linii de despartire _ atunci restul numelui poate sa contina numere sau linii de despartire. Daca primul caracter este cifra atunci si restul numelui trebuie sa contina doar cifre. Perl are mai multe variabile ale caror prim caracter nu este alfanumeric. De exemplu $/ este separatorul de inregistrari. O variabila neinitializata are o valoare speciala nedefinit care poate fi aflata cu ajutorul functiei defined(). Valorile nedefinite se convertesc in functie de context in 0, null sau false. Variabila $_ este folosita implicit de Perl cand o variabila necesara unei operatii nu a fost specificata. De exemplu: <STDIN>; # Atribuie o inregistrare din fisierul STDIN variabilei $_ print; # Tipareste valoarea variabilei $_ chop; # Elimina ultimul caracter din $_ @cuvinte = split; # Imparte sirul $_ in cuvinte despartite de spatii, care devin # elemente succesive ale listei @cuvinte
Variabilele $_, $1, $2, $3 si alte variabile implicite folosite de Perl creaza al doilea paradox Perl: "What you don't see can't help you or hurt you", ceea ce nu poti vedea nu te poate ajuta sau ranii. Functii si subrutine. Functiile in Perl se declara cu simbolul & in fata, excpetie facand cazurile cand numele procedurii urmeaza dupa un cuvatn cheie cum ar fi sub. Exemplu: sub square{return $_[0] ** 2;} print "5 la patrat este ", &square(5); Numele handlerelor de fisiere nu incep cu caractere speciale, si pentru a nu intra in conflict cu alte cuvinte cheie, acestea sunt notate cu litere mari : INPUT, OUTPUT, STDIN, STDOUT, STDERR, etc..