UNIX, Linux, Programare, Scripting, Retele
unix, linux, programare, script, hosting, server, retele
Lista Forumurilor Pe Tematici
UNIX, Linux, Programare, Scripting, Retele | Reguli | Inregistrare | Login

POZE UNIX, LINUX, PROGRAMARE, SCRIPTING, RETELE

Nu sunteti logat.
Nou pe simpatie:
Profil Jamieknv
Femeie
24 ani
Bucuresti
cauta Barbat
26 - 55 ani
UNIX, Linux, Programare, Scripting, Retele / Scripting / [Perl]Bazele Limbajului  
Autor
Mesaj Pagini: 1
Sad_Dreamer
Membru

Inregistrat: acum 19 ani
Postari: 57
Acest Tutorial Este Tradus De DarthSion Smiley


Perl sau Practical Extraction and Report Language este un limbaj de scripting 

inventat de catre Larry Wall pentru a gestiona fisiere text foarte mari. Spre 

deosebire de C++ si Java este un limbaj "interpretat" si nu complilat. Acest tutorial 

are ca scop familiarizarea cu bazele limbajului Perl Smiley.
    Inainte de a incepe orice miscare in Perl aveti nevoie de un program care 

sa interpreteze scripturile si sa le execute. Daca detineti un sistem unix(linux,mac 

os,solaris,bsd) aproape sigur caaveti deja interpretorul perl instalat. Acesta poate fi 

accesat deschizand consola de comanda si executand comanda perl. Daca primiti 

o eroare de genul "command not found" inseamna ca nu aveti perl instalat. 
    Daca folositi windows,sau nu aveti perl instalat puteti downloada 

programul de la.

    Dupa cum v-ati obisnuit de la majoritatea limbajelorde programare,primul 

nostru program va fi unul simplu,care afiseaza pe ecran "Hello World!".
Deschideti editorul de text (pico,vim,notepad,wordpad etc) si introduceti 

urmatoarele linii de cod.

    #!/usr/bin/perl
    print "Hello, world!n";
Salvati fisierul ca hello.pl (sau orice alt nume cu extensia .pl) apoi deschideti 

consola. Schimbati directorul pana in locul unde ati salvat scriptul si scrieti comanda 

"perl hello.pl". Daca ati facut toti pasii cum trebuie ar trebui sa afiseze Hello World!.
    Acum sa studiem sursa. Prima linie "#!/usr/bin/perl" ii transmite 

programului calea spre locul unde este instalat perl pe computerul vostru. Daca 

folosit windows,nu prea aveti nevoie de aceasta linie,dar daca folositi linux inlocuiti 

/usr/bin/perl cu locul unde este instalat perl.
    Linia urmatoare,adica 'print "Hello World!n" ; ' ii transmite programului sa 

afiseze textul Hello World! urmat de o linie noua. Dupa cum probabil ati 

observat,fiecare linie in perl trebuie sa fie urmata de " ; " similar cu multe alte 

limbajede programare.
    Strings - Stringurile reprezinta un sir de caractere care de obicei 

formeaza ceva ce are sens. Cuvantul perl de exemplu este un string. La fel si orice 

alt cuvant sau propozitie,sir de numere etc. In perl,stringurile sunt afisate folosind 

functia perl.
De exemplu,linia 'print "hello world!n" ;" a afisat stringul hello world urmat de o linie 

noua.  Caracterul "n" sau newline este numit "escape sequence" (pentru a face 

acest tutorial cat de cat inteligibil,nu am tradus chiar toti termenii). Limbajul perl 

detine multe escape sequences printre care si "t" care printeaza un tab,adica se 

considera ca ai apasat tab si se muta textul mai la dreapta. De asemeanea "a" este 

un beep. Daca aveti sunetele enabled din windows ar trebui sa auziti beepul. 

Acum,sa zicem ca vreti sa afisati un sir mai lung de caractere "" si "n" fara sa 

adaugati o linie noua in text. . Pt a face asta aven doua posibilitati. Ori inlocuim 

ghilimelele " cu apostrof ' si ceea ce rezulta este " print 'Hello World!n' ;". 

Apostroful transmite intrerpetorului ca tot ceea ce urmeaza este text care trebuie 

doar afisat si nu interpretat. A 2-a varianta este inlocuirea caracterului "" cu "\". 

Aceasta comanda transmite interpretorului sa afiseze caracterul "" lasand litera "n" 

neafectata. Ambele metode au acelasi rezultat.
    Acum sa va prezint alte metode de formatare a textului. Comanda 
'print "Hello" . "World!" . "n" ; ' are acelasi rezultat ca si comanda initiala din 

programul hello world. Aceasta este datorita faptului ca . -punctul- este folosit pt 

concatenarea textului,adica pt a uni mai multe siruri de caractere intr-unul singur. 
    Acelasi efect il obtinem daca in loc de . -punct- folosim , -virgula-.

    !Numere si expresii matematice!
    Expresiile matematice de orice fel pot fi evaluate de programul perl. Operatorii 

folositi sunt urmatorii.
    + - adunare
     - - scadere
    * - inmultire
    / - impartire
    % - calcului restului (operatorul mod)

Spre exemplu,priviti urmatoarele operatii.
print 20+3; #afiseaza 23
print 20-3; #afiseaza 17
print 20*3; #afiseaza 60
print 20/3; #afiseaza 6.66666666666667
print 20%3; #afiseaza 2

Pana acum totul ar trebui sa fie destul de clar. Singura nelamurire este probabil 

semnificatia caracterului "#". In perl # anunta un comentariu. Interpretorul considera 

ca tot ce urmeaza dupa # este un comentariu si nu este afisat sau executat.
    De asemenea,nu trebuie uitata ordinea operatiilor matematice,ce a fost 

predata in cls a 4-a.si anume ca inmultirea si impartirea se executa inaintea adunarii 

si scadereii. Operatia 2+2*3 va avea ca rezultat 8 si nu 12. Daca doriti ca adunarea 

sa fie efectuata inaintea inmultirii folositi paranteze adica (2+2)*3.

    -Variabile.
Of,in sfarsit am ajuns la variabile. Ca sa mai scurtez din tutorial o sa presupun ca 

stiti cu totii ce e aia o variabila,si nu o sa stau sa va explic Smiley. Principalele tipuri de 

variabile in perl sunt 
- Scalar variable notata cu $numevariabila
- Array variable notata cu @numevariabila
- Hash variable notata cu %numevariabila

Partea I


_______________________________________
Portal SkullBox
SkullBox Forum
IP Finder and web browser details revealer


pus acum 19 ani
   
Sad_Dreamer
Membru

Inregistrat: acum 19 ani
Postari: 57
O variabila scalara TREBUIE sa inceapa cu caracterul $(dolar) urmat de 

o litera sau underline. Exemplu de variabila corect scrisa : $variabilaluSion
Exepmplu de variabila incorect scrisa : variabila lu sion, $123variabila etc.
    Variabilelor le sunt asignate valori folosind operatorul = (egal) si pot fi 

printate folosind comanda print.
Iata cum arata programul Hello World folosind o variabila. 

    #!/usr/bin/perl
#hello.pl -cu variabila

$hello_var = "Hello, world!n";
print $hello_var; 

    - Variabile de tipul array.

Cei care au experienta minima intr-un limbaj de programare cunosc termenul de 

vector. Cei care nu au sa isi imagineze un array ca in urmatoarea figura. |__|__|__|
Fiecare casuta are o anumita valoare in interior,iar accest array sau vector contine 

toate acele variabile.
Variabilele array sunt initializate in felul urmator :
    @fructe = ("mere", "pere", "petarde";
    @numere = (23, 54, 35, 5432)
    @chestii_diverse = ("cuvant", 300, "tutorial perl plictisitor"
Dupa cum vedeti un array poate contine orice fel de scalar in interior.
    Operatiuni cu array- In perl ca si in alte limbajede programare numarul 

casutelor,sau variabilelor retinute de catre un array incep cu indicele 0. Adica daca 

dam comanda ' print $fructe[0] ' se va afisa "mere".
Daca dam comanda "$fructe[0] = "banane"; merele vor fi schimbate cu banane Smiley).
Dar,de ce oare folosim $ in loc de @ la aceste operatiuni? Pai,deoarece aceste 

operatiuni se adreseaza numai unei portiuni din array si nu tuturor variabilelor ce sunt 

cuprinse acolo.
    Daca vrem sa actionam in diverse feluri asupra unei portiuni din array 

folosim ceea ce se numeste "array slice" adica felie de array.
print @fructe[1,2,3]; afiseaza mere pere petarde
print @fructe[3,2,1]; afiseaza petarde pere mere.
print @fructe[1..3]; afiseaza mere pere petarde.
    In acest context folosim iar operatorul @ deoarece actionam asupra mai 

multor variabile din array si nu asupra unui singur lucru.
    De asemenea este posibil sa numaram invers intr-un array,fara sa stim 

cate elemente are.
print @fructe[-1]; afiseaza petarde Smiley.
    Ca sa determinam lungimea unui array folosim sintaxa speciala 

$#array(unde inlocuim array cu numele propriuzis). Adica priviti urmatorul exemplu:
$last = $#fructe #variabila last a retinut indexului ultimului element al arrayului
print @fructe[($last/2)..$last] # si se afiseaza a 2-a jumatate a arrayului.
Daca vom afisa variabila $last vom observa ca are valoarea 2 si nu 3-care elem are 

arrayul. Asta se intampla deoarece indexarea incepe de la 0 si nu de la 1. Pt a afla 

numarul real de obiecte din array trebuie doar sa adunam 1 Smiley.
    Totusi,exista si o cale mai simpla de a numara exact cate obiecte are un 

array. Asta se face examinand arrayul dpdv al unei variabile scalare.
Adica $numarul_d_elem = @fructe si vom avea numarul de elemente fara sa mai 

trebuiasca sa adunam sau sa scadem nush ce.
    Stiu ca multi dintre voi "h4x0r-ilor" sunteti foarte lenesi,si stiu ca e destul 

de plictisitor sa tot stai sa scrii la un array toate elementele cu ghilimele virgule si 

alte prostii. De accea va prezint comanda qw//. Operatorul qw// vine de la quote 

words si ia cuvinte separate de spatiu si le transforma intr-o lista fara sa mai stati voi 

cu grija punctuatiei. Spre exemplu initializam un array in felul urmator :
@an = qw/ ianuarie februarie martie aprilie mai iunie iulie august septembrie 

octombrie noiembrei decembrie/ ; Dupa cum vedeti este foarte clar si dificil de 

gresit la o asemenea sintaxa.
    -Afisarea valorilor unui array (nenicule da mult mai dureaza tutorialul asta 

Sad )
Consideram urmatorul program care vorbeste de la sine.
my @fructe = qw/mere portocale banane caise struguri/;
print @fructe; # afiseaza "mereportocalebananecaisestruguri"
print join(", ", @fructe);# afiseaza "mere, portocale, banane, caise, struguri"
print "@fructe"; # afiseaza "mere portocale banane caise struguri"
    Mai ramane ultimul tip de variabila,variabila hash sau matrice,dar e mult 

de scris la ea,multe operatiuni si o sa revin cu un tutorial facut special pt hash.

    -Operatori decizional- Adica if,and,or fratilor Smiley

    Operatorul decizional if. Fara sa mai adaug multa palavrageala iata cum 

functioneaza if in perl.
if( test boolean) {aici intra comenzi ce se executa daca testul boolean este 

adevarat}
Spre exemplu studiati urmatorul program.
if (5 > 3) {
print "Mdap,5 e mai mare decat 3 nenen";}
    Daca tot am ajuns la if,trebuie sa va familiarizez cu operatorii (nu mai stiu 

cum le zice) ma rog,va dati voi seama care cum sunt :
== - egal cu (valoare numerica) adica intre 2 numere cand le testezi egalitatea bagi 

==
eq - egal cu (la stringuri)
> - mai mare
< - mai mic
>= - mai mare sau egal
<= - mai mic sau egal
!= - diferit de (sau nu e egal cu)
|| - operatorul logic sau
&& - operatorul logic si

    Structura conditionala if...blabla...else.
Din nou,un program care vorbeste de la sine : 
if (3 > 5) {
print "Da frate,3 e mai mare decat 5.n";
}

else {
print "Fraiere,3 nu e mai mare decat 5.n";

     
    Structura repetitiva
Structura repetitiva while functioneaza in felul urmator:
while (test boolean adevarat) {executa comenzile de aici}
Priviti urmatorul exemplu:
$i = 0;
while ($i <= 10) {
print "$i inca e mai mic decat 10n";
$i = $i + 1;


Daca tot am batut atata drum pana aici,hai sa va arat si cum scurtam 

textul,facem codul mai curat,si ne pastram lenea pt un joc de cs .
$a += 1; # e la fel cu $a = $a + 1
$a -= 3; # e la fel cu $a = $a - 3
$a *= 42; # e la fel cu $a = $a * 42
$a /= 2; # e la fel cu $a = $a / 2
$a %= 5; # e la fel cu $a = $a % 5;
$a **= 2; # e la fel cu $a = $a ** 2;
     
    De asemenea perl detine si operatori de incrementare ++ si 

decrementare --. Adica $variabila++ # aduna 1 la variabila
$variabila-- #scade 1 din variabila.

    Structura repetitiva for.
For-ul din perl e identic cu cel din c++. Studiati programul urmator si va veti da 

seama ce si cum.
for ($i = 0; $i <= 10; $i++) {
print "$i nu e mai mare decat 10n";


Partea A II-Ia
Acest Tutorial A Fost Tradus De Darth Sion

Am acordat credite :-P


_______________________________________
Portal SkullBox
SkullBox Forum
IP Finder and web browser details revealer


pus acum 19 ani
   
operabilus
B.O.F.H.

Din: Sillycon Valley
Inregistrat: acum 20 ani
Postari: 200

Sad_Dreamer a scris:

Am acordat credite :-P

Asa e... dar nu ai formatat codul

Just kidding... nice one... sa mai aud acum pe care care zice ca nu este documentatie de Perl in romana


_______________________________________
Portal SkullBox
SkullBox Forum
IP Finder and web browser details revealer


pus acum 19 ani
   
Sad_Dreamer
Membru

Inregistrat: acum 19 ani
Postari: 57
da...shtiu dar nah...nu am prea mult acces la net si ...mai bine il formatez cand am mai mult timp :-P
tip:  perl este foarte ushor si poti face multe cu el ! puneti mana si invatzatzi


_______________________________________
Portal SkullBox
SkullBox Forum
IP Finder and web browser details revealer


pus acum 19 ani
   
Pagini: 1  

Mergi la