Tutorial Perl

Ce este Perl?

Perl este un limbaj de programare de nivel รฎnalt, de uz general, interpretat ศ™i dinamic. Perl este un termen care รฎnseamnฤƒ โ€žPractical Extraction and Reporting Languageโ€, chiar dacฤƒ nu existฤƒ un acronim pentru Perl. A fost introdus de Larry Wall รฎn 1987. Limbajul Perl a fost special conceput pentru editarea textului. Dar acum, este utilizat pe scarฤƒ largฤƒ pentru o varietate de scopuri, inclusiv administrarea sistemului Linux, programarea รฎn reศ›ea, dezvoltarea web etc.

Prezentare generalฤƒ a limbajelor de programare

Sฤƒ o punem รฎntr-un mod simplu. รŽn timp ce computerele รฎnศ›eleg doar 0 ศ™i 1 (limbaj binar/limbaj maศ™inฤƒ/[limbaj de nivel scฤƒzut]), este foarte dificil sฤƒ programฤƒm รฎntr-un limbaj binar pentru noi, oamenii. Perl este un limbaj de programare care foloseศ™te elemente de limbaj natural, cuvinte care sunt folosite รฎn limba englezฤƒ comunฤƒ ศ™i, prin urmare, este mai uศ™or de รฎnศ›eles de cฤƒtre oameni.limbaj de nivel รฎnalt]. Acum existฤƒ o problemฤƒ; computerele nu pot รฎnศ›elege limbaje de nivel รฎnalt, pe care noi, oamenii, le putem รฎnศ›elege cu uศ™urinศ›ฤƒ. Pentru asta, avem nevoie de ceva care sฤƒ poatฤƒ traduce limbajul de nivel รฎnalt รฎn limbajul de nivel scฤƒzut. Aici interpretul ne vine รฎn ajutor. Interpretul este un program care converteศ™te programul scris รฎn limbajul de nivel รฎnalt รฎntr-un limbaj de nivel scฤƒzut pentru ca computerul sฤƒ รฎnศ›eleagฤƒ ศ™i sฤƒ execute instrucศ›iunile scrise รฎn program. Prin urmare, Perl este un limbaj de programare interpretat.

Unde se foloseศ™te Perl?

Puterea limbajului de scripting Perl poate fi implementatฤƒ รฎn multe domenii. Cea mai popularฤƒ utilizare a Perl este รฎn dezvoltarea Web., Perl este, de asemenea, folosit pentru a automatiza multe sarcini รฎn serverele Web ศ™i alte joburi de administrare, poate genera automat e-mailuri ศ™i curฤƒศ›a sistemele. Perl este รฎncฤƒ folosit รฎn scopul sฤƒu iniศ›ial, adicฤƒ extragerea datelor ศ™i generarea de rapoarte. Poate produce rapoarte privind utilizarea resurselor ศ™i poate verifica problemele de securitate รฎntr-o reศ›ea. Din acest motiv, Perl a devenit un limbaj popular folosit ศ™i รฎn dezvoltarea web, reศ›ele ศ™i bioinformaticฤƒ. Pe lรขngฤƒ toate acestea, perl poate fi folosit ศ™i pentru programarea CGI.

Perl poate fi folosit ศ™i pentru crearea ศ™i manipularea imaginilor. รŽn afarฤƒ de aceastฤƒ reศ›ea prin telnet, FTP, etc., crearea interfeศ›ei grafice cu utilizatorul, electronicele VLSI ศ™i crearea de filtre de e-mail pentru a reduce practicile de spam sunt cรขteva cazuri de utilizare ale Perl.

Perl este, de asemenea, cunoscut pentru implementarea practicilor OOP (programare orientatฤƒ pe obiect) ศ™i acceptฤƒ toate formele de moศ™tenire (simple, multiple ศ™i diamantate), polimorfism ศ™i รฎncapsulare. Perl este suficient de flexibil pentru a suporta simultan practicile procedurale ศ™i POO. Perl are, de asemenea, module suplimentare care vฤƒ permit sฤƒ scrieศ›i sau sฤƒ utilizaศ›i/reutilizaศ›i codul scris Python, PHP, PDL, TCL, Octave, Java, C, C++, Basic, Ruby ศ™i Lua รฎn scriptul dvs. Perl. Aceasta รฎnseamnฤƒ cฤƒ puteศ›i combina Perl cu aceste suplimentare limbaje de programare mai degrabฤƒ rescriind codul existent.

Aplicaศ›ii ale limbajului de programare Perl

Aplicaศ›ii ale limbajului de programare Perl

De ce sฤƒ folosiศ›i Perl?

Este adevฤƒrat cฤƒ existฤƒ ศ™i alte limbaje de programare care pot fi folosite pentru a face toate lucrurile care au fost menศ›ionate mai sus, atunci de ce ar trebui sฤƒ utilizaศ›i รฎn mod specific Perl? Perl este foarte uศ™or de รฎnvฤƒศ›at, mai ales dacฤƒ ai experienศ›ฤƒ รฎn programarea computerelor. Perl a fost conceput pentru a fi uศ™or de scris ศ™i de รฎnศ›eles de cฤƒtre oameni, mai degrabฤƒ decรขt sฤƒ-l faciliteze procesarea de cฤƒtre computere. Foloseศ™te expresii regulate. Stilul sฤƒu natural de limbaj este diferit de alte limbaje de programare care folosesc gramaticฤƒ ศ™i sintaxe specifice; prin urmare, Perl este foarte flexibil ศ™i nu vฤƒ impune vreun mod special de a gรขndi o soluศ›ie sau o problemฤƒ. Perl este extrem de portabil. Poate rula pe orice sistem de operare care are un interpret Perl instalat, deci este independent de platformฤƒ. Toate Linux OperaSistemele ting sunt instalate cu Perl, astfel รฎncรขt sฤƒ puteศ›i รฎncepe codarea Perl รฎn Linux imediat. Acest lucru este spre deosebire de scripturile Shell, รฎn care codul se modificฤƒ odatฤƒ cu utilizarea distribuศ›iei Linux, fฤƒcรขndu-l din ce รฎn ce mai puศ›in portabil. Sarcinile specifice mici รฎn Perl devin foarte uศ™oare ศ™i rapide. Pe parcursul acestui tutorial Perl pentru รฎncepฤƒtori, veศ›i รฎnvฤƒศ›a cum puteศ›i codifica programe mici ศ™i rapide pentru sarcini specifice. Sฤƒ luฤƒm un exemplu simplu al programului clasic Hello World care este folosit pentru a รฎncepe sฤƒ รฎnveศ›e orice limbaj de programare care are UNIX ca rฤƒdฤƒcinฤƒ:

Exemplu: Perl salut lume

Exemplu simplu de Perl

#!/usr/bin/perl
print "Hello, world!";

ieศ™ire:

Salut Lume!

Cele douฤƒ linii de cod de mai sus se vor imprima Bunฤƒ, lume! Acum nu a fost prea simplu ศ™i rapid? Elevii cu cunoศ™tinศ›e de C, C++ va ศ™ti cฤƒ necesitฤƒ mai multe linii de cod pentru a obศ›ine aceeaศ™i ieศ™ire รฎn acele limbi.

S-ar putea sฤƒ vฤƒ รฎntrebaศ›i de ce Perl este atรขt de faimos pe web. Este simplu, deoarece majoritatea lucrurilor care se รฎntรขmplฤƒ pe web sunt de TEXT, iar Perl este foarte bun la procesarea textului. Dacฤƒ comparฤƒm Perl cu oricare dintre limbi, atunci Perl va fi cea mai bunฤƒ limbฤƒ care este bunฤƒ รฎn gestionarea fiศ™ierelor, procesarea textului ศ™i raportarea rezultatelor

Unul dintre cele mai bune avantaje ale Perl este cฤƒ este liber de utilizat

Comunitatea Perl crede cu tฤƒrie cฤƒ software-ul ar trebui sฤƒ fie liber disponibil, liber modificabil ศ™i liber distribuit. Mai mulศ›i voluntari din comunitatea Perl se strฤƒduiesc sฤƒ facฤƒ limbajul de programare cรขt mai bun posibil.

Avantajele ศ™i dezavantajele Perl

Pro-uri: Contra:

Avantajele Perl

Dezavantajele Perl

  • รŽn comparaศ›ie cu alte limbaje de programare, Perl este cel mai puternic pentru manipularea ศ™i analizarea textului
  • Acesta este un limbaj interpretat cu timp de execuศ›ie rapid, deoarece nu este nevoie sฤƒ compilaศ›i un script Perl
  • Simplu ศ™i uศ™or de programat ศ™i de รฎnศ›eles.
  • Este orientat pe obiect.
  • Biblioteca CPAN faciliteazฤƒ dezvoltarea Perl (vom afla mai multe despre acest lucru mai tรขrziu รฎn subiect).
  • Folosit รฎn dezvoltarea web, รฎn โ€‹โ€‹principal pentru Gateway-uri de platฤƒ.
  • Folosit รฎn automatizare ศ™i pentru a testa majoritatea lucrurilor legate de reศ›ea ศ™i stocare.
  • Existฤƒ suport minim pentru GUI รฎn comparaศ›ie cu alte limbaje de programare.
  • Trebuie sฤƒ vฤƒ referiศ›i la module complexe de bibliotecฤƒ care nu sunt atรขt de uศ™or de รฎnศ›eles (Nu vฤƒ speriaศ›i dupฤƒ ce ศ™tiศ›i cum sฤƒ faceศ›i lucrurile, totul va fi uศ™or).
  • รŽnศ›elegerea modelelor complexe necesitฤƒ experienศ›ฤƒ.

Sฤƒ รฎncepem

Cu suficiente cunoศ™tinศ›e despre istoria Perl ศ™i despre conceptele de bazฤƒ de programare a computerelor necesare pentru codificare รฎn Perl, este timpul sฤƒ ne aruncฤƒm la cap ศ™i sฤƒ รฎncepem cu Perl. Urmฤƒtorul capitol vฤƒ va รฎnvฤƒศ›a cum puteศ›i configura Perl pe sistemul dumneavoastrฤƒ ศ™i sฤƒ vฤƒ pregฤƒtiศ›i pentru cฤƒlฤƒtoria de codare รฎn Perl. Acest tutorial de scriptare Perl va lua Linux ca sistem de operare pe care studenศ›ii รฎl vor folosi pentru codificare รฎn Perl.

Descฤƒrcaศ›i ศ™i instalaศ›i Perl - Windows, Mac ศ™i Linux

Cum sฤƒ obศ›ineศ›i Perl?

Veศ™ti bune probabil il ai!

Dar dacฤƒ nu รฎl gฤƒsiศ›i deja pe sistemul dvs., รฎl puteศ›i obศ›ine รฎn continuare gratuit.

Pentru a afla dacฤƒ aveศ›i deja instalat Perl, intraศ›i รฎn linia de comandฤƒ ศ™i tastaศ›i: perl -v

Cum se descarcฤƒ Perl

Comanda va afiศ™a versiunea Perl dacฤƒ este instalatฤƒ. รŽn acest caz, versiunea este v5.14.2. Dar dacฤƒ nu... nu intraศ›i รฎn panicฤƒ...

UnixTutorial PERL pentru รฎncepฤƒtori - Ghid complet Deja instalat Vine preinstalat cu Perl, deศ™i poate fi necesar sฤƒ actualizaศ›i la cea mai recentฤƒ versiune.
Mac OS Tutorial PERL pentru รฎncepฤƒtori - Ghid complet Deja instalat OSX vine cu Perl preinstalat, deศ™i poate fi necesar sฤƒ-l actualizaศ›i la cea mai recentฤƒ versiune
WindowsTutorial PERL pentru รฎncepฤƒtori - Ghid complet Trebuie instalat Sunt disponibile douฤƒ opศ›iuni

  1. Strawberry Perl este o distribuศ›ie binarฤƒ open source a Perl pentru Windows OS. Include un compilator ศ™i module preinstalate care oferฤƒ posibilitatea de a instala module XS CPAN direct din CPAN
  2. ActiveState perl oferฤƒ o distribuศ›ie binarฤƒ a Perl (pentru multe platforme), precum ศ™i propriul manager de pachete Perl (PPM)

Actualizarea Perl pe Linux:

Dacฤƒ trebuie sฤƒ actualizaศ›i versiunea Perl, introduceศ›i o singurฤƒ linie de comandฤƒ

sudo apt-get install perl

si relaxeaza-te. De restul se va ocupa. Doar asiguraศ›i-vฤƒ cฤƒ aveศ›i o conexiune activฤƒ la internet.

Actualizaศ›i PERL pe Linux

Actualizaศ›i PERL pe Linux

Instalaศ›i perl pentru Windows:

Mai รฎntรขi, descฤƒrcaศ›i Active Perl de aici legฤƒturฤƒ. Urmaศ›i aceศ™ti paศ™i pentru a instala ActivePerl Windows sistem. Consultaศ›i capturile de ecran de mai jos pentru acelaศ™i lucru.

Pasul 1: Dupฤƒ ce descฤƒrcaศ›i programul de instalare ศ™i รฎncepeศ›i instalarea, veศ›i vedea fereastra de mai jos, faceศ›i clic pe urmฤƒtorul pentru a continua.

Cum se instaleazฤƒ Perl pe Windows

Pasul 2: Acceptaศ›i acordul de licenศ›ฤƒ pentru a continua instalarea.

Cum se instaleazฤƒ Perl pe Windows

Pasul 3: Mai jos sunt diferite pachete care vor fi instalate. รŽn mod implicit, toate vor fi selectate. Singurul lucru diferit este PPM (Perl Package Manager). Acesta este utilitarul oferit de Active Perl pentru a instala module sau biblioteci externe Perl รฎn sistemul dumneavoastrฤƒ. Faceศ›i clic pe Urmฤƒtorul pentru a continua.

Instalarea Perl pe Windows

Pasul 4: Acestea sunt diferite tipuri de extensii Perl care pot fi folosite pentru Perl. รŽn mare parte, vom folosi .Pl, .Plx ศ™i .Pm pentru Perl. Modulele Perl folosesc practic .Pm ca extensie de fiศ™ier pentru a se referi la un fiศ™ier de bibliotecฤƒ. Selectaศ›i toate opศ›iunile ศ™i faceศ›i clic pe butonul Urmฤƒtorul.

Instalarea Perl pe Windows

Pasul 5: Faceศ›i clic pe butonul Instalare pentru a continua cu instalarea.

Instalarea Perl pe Windows

Pasul 6: Odatฤƒ instalat, executaศ›i comanda โ€žPerl โ€“vโ€ pentru a verifica dacฤƒ Perl este instalat cu succes รฎn sistemul dumneavoastrฤƒ.

Instalare PERL activatฤƒ Windows

Existฤƒ o mulศ›ime de lucruri care trebuie discutate pentru setarea mediului Perl atรขt รฎn โ€‹โ€‹Linux, cรขt ศ™i Windows, deoarece nu vor fi multe fiศ™iere de bibliotecฤƒ incluse รฎn aceastฤƒ instalare. Trebuie sฤƒ le instalaศ›i manual. Le puteศ›i instala manual folosind CPAN (Comprehensive Perl Archive Network) sau fie PPM care funcศ›ioneazฤƒ numai pentru perl windows. Dar aceste fiศ™iere nu sunt obligatorii pentru a รฎncepe codarea รฎn Perl.

รŽn afarฤƒ de aceastฤƒ configurare Windows, aศ›i putea folosi Windows Noua caracteristicฤƒ a subsistemului Linux din 10 pe Windows ศ™i utilizaศ›i-o pentru a rula codul perl

Primul program Perl

Hello world!

Exemplu Perl: Hello World

#!/usr/bin/perl -w
#this is just a commentโ€ฆ
print "Hello World";

Nu vฤƒ faceศ›i griji dacฤƒ nu รฎnศ›elegeศ›i acest text. Totul va fi clar รฎn curรขnd. Haide ศ™i aruncฤƒ o privire pe rรขnd:

#!/usr/bin/perl		

Aceasta spune Operating System sฤƒ execute acest fiศ™ier cu programul situat la /usr/bin/perl Unele IDE-uri nu au nevoie de aceastฤƒ linie. Dacฤƒ este esenศ›ial, trebuie sฤƒ scrieศ›i aici o cale cฤƒtre interpret. Tine minte! Aceastฤƒ linie specialฤƒ trebuie sฤƒ fie la รฎnceputul programului dvs. ศ™i trebuie sฤƒ รฎnceapฤƒ de la #! folosiศ›i avertismente; Aceasta este o altฤƒ comandฤƒ specialฤƒ care รฎi spune interpretului sฤƒ afiศ™eze orice avertismente, adicฤƒ -w care activeazฤƒ avertismente la nivel global.

print "Hello World";		

Instrucศ›iunea de imprimare scrie text pe ecran. Punctul ศ™i virgulฤƒ de la sfรขrศ™itul liniei รฎi spune interpretului perl cฤƒ instrucศ›iunea este terminatฤƒ. Trebuie sฤƒ puneศ›i un punct ศ™i virgulฤƒ la sfรขrศ™itul fiecฤƒrei instrucศ›iuni din codul Perl. Notaศ›i ghilimele ("). Este necesar pentru instrucศ›iunile de imprimare. Salvaศ›i scriptul de mai sus ca firstprog.pl

On Windows

Dacฤƒ aveศ›i Strawberry instalat, puteศ›i pur ศ™i simplu sฤƒ faceศ›i clic pe Run. De asemenea, puteศ›i rula interfaศ›a de linie de comandฤƒ ศ™i puteศ›i scrie pe consolฤƒ:

C:\> perl path\firstprog.pl		

sau, dacฤƒ perl.exe nu este รฎn calea ta:

C:\> c:\perl\bin\perl.exe firstprog.pl		

Pe Linux/Unix

Trebuie doar sฤƒ deschideศ›i Terminalul ศ™i sฤƒ scrieศ›i:

perl firstprog.pl		

Dacฤƒ nu puteศ›i rula programul, asiguraศ›i-vฤƒ cฤƒ aveศ›i eligibilitatea pentru a-l rula. Introduceศ›i รฎn terminal:

chmod +x firstprog.pl		

Programul dvs. este acum executabil ศ™i gata de rulare. Pentru a executa, scrie:

./firstprog		

Instalaศ›i modulele cpan minus

Modulele sunt seturi de coduri care sunt folosite pentru a efectua sarcini care efectueazฤƒ operaศ›ii comune รฎn mai multe programe. Dacฤƒ utilizaศ›i module perl, nu trebuie sฤƒ rescrieศ›i codurile pentru a efectua aceeaศ™i operaศ›iune. Perl poate folosi astfel de biblioteci externe de coduri. Una dintre cele mai bune biblioteci este CPAN. Aceasta รฎnseamnฤƒ Comprehensive Perl Archireศ›ea ศ™i conศ›ine o cantitate mare de module Perl pe care sฤƒ le utilizaศ›i. Este o comunitate sau o reศ›ea a unui numฤƒr mare de dezvoltatori care contribuie cu astfel de module. Instalรขnd suport pentru modulele CPAN รฎn modulul dvs. perl, puteศ›i utiliza modulele CPAN ศ™i vฤƒ puteศ›i uศ™ura munca. Majoritatea modulelor Perl sunt scrise รฎn Perl, unele folosesc XS (sunt scrise รฎn C), aศ™a cฤƒ necesitฤƒ un compilator C (este uศ™or sฤƒ obศ›ineศ›i aceastฤƒ configurare โ€“ nu vฤƒ panicaศ›i. Modulele pot avea dependenศ›e de alte module (aproape รฎntotdeauna de CPAN) ศ™i nu poate fi instalat fฤƒrฤƒ ele (sau fฤƒrฤƒ o versiune specificฤƒ a acestora) Meritฤƒ sฤƒ citiศ›i cu atenศ›ie documentaศ›ia pentru opศ›iunile de mai jos obศ›ineศ›i, despachetaศ›i, construiศ›i ศ™i instalaศ›i module din CPAN pentru a facilita instalarea altor module (ne veศ›i mulศ›umi mai tรขrziu). App-cpanminus module perl, รฎn linia de comandฤƒ tastaศ›i:

cpan App::cpanminus

cpan App::cpanminus Asiguraศ›i-vฤƒ cฤƒ aveศ›i conexiune la internet รฎn timp ce modulele perl sunt descฤƒrcate ศ™i instalate.

Instalarea modulelor cpan minus

Acum instalaศ›i orice modul:

cpan โ€“i <Module_Name>.		

Sฤƒ vedem un exemplu de instalare a unui modul File::Data (Este o interfaศ›ฤƒ pentru a accesa File Data).

Instalarea modulelor cpan minus

Variabila Perl

Acum, vom vorbi despre variabile. Vฤƒ puteศ›i imagina un tip de container ca variabil care conศ›ine una sau mai multe valori. Odatฤƒ definit, numele variabilei rฤƒmรขne acelaศ™i, dar valoarea sau valorile se schimbฤƒ din nou ศ™i din nou.

Existฤƒ 3 tipuri de variabile:

Tipuri de variabile รฎn Perl

Tipuri de variabile รฎn Perl

Cele mai uศ™oare sunt scalarii, iar acesta este subiectul nostru de astฤƒzi

Variabilฤƒ scalarฤƒ

Acest tip de variabilฤƒ deศ›ine o singurฤƒ valoare.

Numele sฤƒu รฎncepe cu un semn dolar ศ™i un identificator Perl (este numele variabilei noastre).

Variabilฤƒ scalarฤƒ รฎn Perl

Variabilฤƒ scalarฤƒ รฎn Perl

Convenศ›ia de denumire

Dacฤƒ sunteศ›i familiarizat cu alte limbaje de programare, atunci aศ›i ศ™ti cฤƒ existฤƒ anumite reguli despre denumirea variabilelor. รŽn mod similar, Perl are trei reguli pentru denumirea scalarilor.

  1. Toate numele scalare vor รฎncepe cu $. Este uศ™or sฤƒ vฤƒ amintiศ›i sฤƒ prefixaศ›i fiecare nume cu $. Gรขndiศ›i-vฤƒ la asta ca la un scalar $.
  2. Ca PHP. dupฤƒ primul caracter $, care este special รฎn Perl, sunt permise caractere alfanumerice, adicฤƒ de la a la z, de la A la Z ศ™i de la 0 la 9. Este permis ศ™i caracterul de subliniere. Folosiศ›i sublinierea pentru a รฎmpฤƒrศ›i numele variabilelor รฎn douฤƒ cuvinte. โ€žDar primul caracter nu poate fi un numฤƒrโ€
  3. Chiar dacฤƒ numerele pot face parte din nume, ele nu pot veni imediat dupฤƒ $. Aceasta รฎnseamnฤƒ cฤƒ primul caracter dupฤƒ $ va fi fie un alfabet, fie liniuศ›a de subliniere. Cei care vin din C/C++ fundalul ar trebui sฤƒ poatฤƒ recunoaศ™te imediat asemฤƒnarea. Exemple

Exemplu Perl:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

Acestea, totuศ™i, nu sunt nume legale de variabile scalare.

mohohoh                                              # $ character is missing 
$                                                    # must be at least one letter 
$47x                                           # second character must be a letter
$variable!                                 # you can't have a ! in a variable name

Regula generalฤƒ spune cฤƒ, atunci cรขnd Perl are doar unul din ceva, acesta este un scalar. Scalarii pot fi cititi de pe dispozitive ศ™i รฎi putem folosi รฎn programele noastre.

Douฤƒ tipuri de tipuri de date scalare

  1. Numbers
  2. Corzi

Numbers:

รŽn acest tip de date scalare am putea specifica:

  • numere รฎntregi, pur ศ™i simplu sunt numere รฎntregi, cum ar fi 2, 0, 534
  • numere รฎn virgulฤƒ mobilฤƒ, sunt numere reale, cum ar fi 3.14, 6.74, 0.333

Numฤƒr variabile รฎn Perl

Notฤƒ: รŽn general, interpretul Perl vede numere รฎntregi ca numere รฎn virgulฤƒ mobilฤƒ. De exemplu, dacฤƒ scrieศ›i 2 รฎn programele dvs., Perl รฎl va vedea ca 2.0000

Literale รฎntregi:

Este format din una sau mai multe cifre, precedate opศ›ional de un plus sau minus ศ™i care conศ›in liniuศ›e de subliniere.

Exemple Perl:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

Dupฤƒ cum puteศ›i vedea, nu este nimic special. Dar crede-mฤƒ, acesta este cel mai comun tip de scalari. Sunt peste tot.

Literale รฎn virgulฤƒ mobilฤƒ:

Este format din cifre, opศ›ional minus, virgulฤƒ zecimalฤƒ ศ™i exponent.

Exemple Perl:

3.14;
255.000;
3.6e20;                                  # it's 3.6 times 10 to the 20th
-3.6e20;                                 # same as above, but negative
-3.6e-20;                                #it's negative 3.6 times 10 to the -20th
-3.6E-20;                                #we also can use E โ€“ this means the same the lowercase version -3.6e-20

Literale รฎn virgulฤƒ mobilฤƒ รฎn Perl

Reprezentare octalฤƒ, hexazecimalฤƒ ศ™i binarฤƒ:

Este o alternativฤƒ la sistemul zecimal. Permiteศ›i-mi sฤƒ vฤƒ arฤƒt reprezentarea octalฤƒ, hexazecimalฤƒ ศ™i binarฤƒ. Un tabel scurt prezintฤƒ toate informaศ›iile importante despre aceste stiluri ciudate:

Reprezentare bazฤƒ Procedat de
octal 8 0 (zero)
Hexazecimal 16 0x
Binar 2 0b

Exemple Perl:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

Toate aceste valori pentru Perl รฎnseamnฤƒ acelaศ™i lucru. Perl nu stocheazฤƒ valorile รฎn acelaศ™i format. Acesta va converti intern aceste valori hexazecimale, binare, octale รฎn zecimale.

Atribuirea este cea mai comunฤƒ operaศ›ie pe un scalar ศ™i este foarte simplฤƒ. Perl foloseศ™te pentru acel semn egal. Ia o valoare a expresiei din partea dreaptฤƒ ศ™i pune aceastฤƒ valoare variabilei noastre.

Sฤƒ aruncฤƒm o privire la exemple:

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

รŽn plus, puteศ›i introduce รฎn variabilฤƒ nu doar un numฤƒr, ci ศ™i o expresie.

$z = 6 + 12               # give $z value of 18

Corzi

ศ˜iruri: este, de asemenea, un tip de scalar foarte simplu.

Lungimea maximฤƒ a unui ศ™ir รฎn Perl depinde de cantitatea de memorie pe care o are computerul. Nu existฤƒ limitฤƒ pentru dimensiunea ศ™irului, orice cantitate de caractere, simboluri sau cuvinte poate alcฤƒtui ศ™irurile dvs. Cel mai scurt ศ™ir nu are caractere. Cel mai lung poate umple toatฤƒ memoria sistemului. Programele Perl pot fi scrise รฎn รฎntregime รฎn setul de caractere ASCII de 7 biศ›i. Perl vฤƒ permite, de asemenea, sฤƒ adฤƒugaศ›i orice set de caractere pe 8 sau 16 biศ›i. caractere non-ASCII din literalele ศ™ir. Perl a adฤƒugat ศ™i suport pentru Unicode UTF-8.

Tipuri de ศ™iruri de caractere รฎn Perl

Ca ศ™i numerele, existฤƒ douฤƒ tipuri diferite de ศ™iruri:

  • Literele ศ™ir de ghilimele simple
  • Double citeazฤƒ literale ศ™iruri

Literale ศ™ir de ghilimele simple

Ghilimelele simple sunt folosite pentru a include datele pe care doriศ›i sฤƒ le luaศ›i la propriu. Un scurt exemplu ศ™i totul ar trebui sฤƒ fie clar:

Exemple Perl:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

ieศ™ire:

este $num

Aici, din cauza ghilimelelor simple, valoarea $num nu este luatฤƒ ศ™i caracterele literale โ€ž$โ€, โ€žnโ€, โ€žuโ€ ศ™i โ€žmโ€ sunt adฤƒugate la valoarea $txt

Double-literale ศ™ir de caractere citate

Double ghilimelele sunt folosite pentru a include datele care trebuie interpolate รฎnainte de procesare. Asta รฎnseamnฤƒ cฤƒ caracterele ศ™i variabilele evadate nu sunt pur ศ™i simplu introduse literal รฎn operaศ›iunile ulterioare, ci sunt evaluate pe loc. Caracterele de evacuare pot fi folosite pentru a insera linii noi, tab-uri etc.

Exemple Perl:

$num = 7; 
$txt = "it is $num"; 
print $txt;

ieศ™ire:

este 7

Aici, din cauza ghilimelelor duble, valoarea $num este adฤƒugatฤƒ la valoarea $txt

Double-ghilimele interpoleazฤƒ variabile scalare ศ™i matrice, dar nu hash-uri. Pe de altฤƒ parte, puteศ›i folosi ghilimele duble pentru a interpola felii din ambele matrice ศ™i hash-uri.

Misterios \n

Luaศ›i รฎn considerare urmฤƒtorul program

Exemple Perl:

print "hello \n";

ieศ™ire:

Alo

Perl nu afiศ™eazฤƒ doar โ€žhello\nโ€, ci doar โ€žhelloโ€. De ce? Deoarece โ€ž\nโ€ este un semn special ศ™i รฎnseamnฤƒ cฤƒ doriศ›i sฤƒ mergeศ›i la o nouฤƒ linie รฎn timp ce afiศ™aศ›i textul รฎn program. imprimaศ›i โ€žbunฤƒ ziua\n linie nouฤƒโ€; Urmฤƒtoarea รฎntrebare - existฤƒ vreun alt semn special? Da, ei sunt! Dar nu vฤƒ faceศ›i griji - doar cรขteva. Verificaศ›i tabelul de mai jos

construi Descriere
\n linie nouฤƒ
\r reveni
\t fila
\f formfeed
\b spate spate
\a clopot
\e scฤƒpa
\ 007 orice valoare ASCII octalฤƒ (aici, 007 = clopot)
\x7f orice valoare hexadecimalฤƒ (aici, 7f = ศ™terge)
\\ backslash
\ " citat dublu
\l urmฤƒtoarea literฤƒ micฤƒ
\L toate literele urmฤƒtoare pรขnฤƒ la \E
\u litera urmฤƒtoare majuscule
\U majuscule toate literele urmฤƒtoare pรขnฤƒ la \E
\E Terminaศ›i \L, \U

ศ˜tiu, nu existฤƒ โ€ždoar cรขtevaโ€โ€ฆ Dar crede-mฤƒ, trebuie sฤƒ ศ™tii doar

Variabilฤƒ ศ™iruri

Este aceeaศ™i operaศ›iune, pe care o vedem รฎn alocarea numerelor. Perl primeศ™te ศ™irul nostru din partea dreaptฤƒ a semnului egal ศ™i pune acest ศ™ir รฎntr-o variabilฤƒ.

Exemple Perl:

$string = 'tutorial';                                      # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ;                                           # give $string the current value of $size plus 3
print $string;
$string = $ string * 5;                                         # multiplied $string by 5
print $string;

ieศ™ire:

tutorial 315

Dupฤƒ cum puteศ›i vedea, puteศ›i pune numere ศ™i ศ™iruri รฎn aceleaศ™i variabile. Nu existฤƒ o clasฤƒ de variabile.

Concatenarea ศ™irurilor (perioada) :

Operatorul de concatenare โ€ž.โ€ uneศ™te douฤƒ sau mai multe ศ™iruri. Tine minte! Dacฤƒ ศ™irul conศ›ine ghilimele, รฎntoarceri de transport, bare oblice inverse, toate aceste caractere speciale trebuie sฤƒ fie eliminate cu o barฤƒ oblicฤƒ inversฤƒ.

Variabila Perl " " Exemple:

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

ieศ™ire:

Tom este pisica preferatฤƒ a mamei

Corzile

โ€ž$aโ€, โ€ž$bโ€, este concatenat ศ™i stocat รฎn โ€ž$cโ€ folosind โ€ž.โ€ operator.

La sfarsitโ€ฆ

Conversia รŽntre Numbers ศ™i ศ™iruri:

Dupฤƒ cum ศ™tiศ›i, Perl converteศ™te automat รฎntre numere รฎn ศ™ir, dupฤƒ cum este necesar. De unde ศ™tie Perl de ce avem nevoie acum? Acest lucru este simplu - totul depinde de operator (vom vorbi despre operatori mai tรขrziu, acum, acceptaศ›i doar cฤƒ existฤƒ o mulศ›ime de operatori, diferiศ›i pentru numere ศ™i ศ™iruri) Dacฤƒ un operator aศ™teaptฤƒ un numฤƒr, Perl va folosi valoarea ca numฤƒr . Dacฤƒ un operator aศ™teaptฤƒ un ศ™ir, Perl va folosi valoarea ca ศ™ir. Cu alte cuvinte, nu trebuie sฤƒ vฤƒ faceศ›i griji cu privire la acest tip de conversie. Exemplu scurt ศ™i totul ar trebui sฤƒ fie clar:

Exemple Perl:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

ieศ™ire:

71

valoarea $string este convertitฤƒ รฎntr-un numฤƒr รฎntreg ศ™i adฤƒugatฤƒ la valoarea $number.

Rezultatul adunฤƒrii, 71, este atribuit $result.

Domeniul de aplicare al unei variabile โ€“ Modificatori de acces

Putem declara un scalar รฎn oriunde รฎn program. Dar trebuie sฤƒ specificaศ›i un modificator de acces

Existฤƒ 3 tipuri de modificatori

  1. my
  2. local
  3. al nostru

My: Folosind aceasta, puteศ›i declara orice variabilฤƒ care este specificฤƒ รฎn bloc. adicฤƒ รฎn cadrul bretelor.

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

Fฤƒrฤƒ ieศ™ire

Rezultatul programului nu va fi nimic!

Tutorial PERL pentru รฎncepฤƒtori - Ghid complet

รŽn exemplul de mai sus, veศ›i vedea cฤƒ existฤƒ douฤƒ variabile declarate una este รฎn interiorul blocului if ($var_2) ศ™i cealaltฤƒ este รฎn afara blocului If ($var). Variabila, care este declaratฤƒ รฎn afara blocului, va fi accesibilฤƒ pentru if block, dar variabila care a fost declaratฤƒ รฎn interiorul if block nu va fi accesibilฤƒ programului exterior.

Local: Folosind aceasta, putem de fapt masca aceleaศ™i valori ale variabilei รฎn valori diferite, fฤƒrฤƒ a schimba efectiv valoarea iniศ›ialฤƒ a variabilei, sฤƒ presupunem cฤƒ avem o variabilฤƒ $a cฤƒreia i se atribuie valoarea 5, puteศ›i schimba de fapt valoarea acelei variabile prin re-declararea aceleiaศ™i variabile folosind cuvรขntul cheie local fฤƒrฤƒ a modifica valoarea iniศ›ialฤƒ a variabilei care este 5. Sฤƒ vedem cum funcศ›ioneazฤƒ acest lucru cu un exemplu.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

Ieศ™irea programului de mai sus va fi รฎn acest mod.

local, $var = 3

global, $var = 5

รŽn acest fel putem schimba valoarea variabilei fฤƒrฤƒ a afecta valoarea iniศ›ialฤƒ.

Nostru: Odatฤƒ ce o variabilฤƒ este declaratฤƒ cu modificatorul de acces โ€žnostruโ€, aceasta poate fi utilizatฤƒ รฎn รฎntregul pachet. Sฤƒ presupunem cฤƒ aveศ›i un modul Perl sau un pachet test.pm care are o variabilฤƒ declaratฤƒ cu scope our. Aceastฤƒ variabilฤƒ poate fi accesatฤƒ รฎn orice script care va folosi acel pachet.

Dacฤƒ sunteศ›i serios รฎn ceea ce priveศ™te programarea รฎn Perl, ar trebui sฤƒ รฎncepeศ›i programul cu

#!/usr/local/bin/perl

folosiศ›i strict;

Acest lucru vฤƒ va ajuta sฤƒ scrieศ›i un cod mai bun ศ™i mai curat. โ€žutilizaศ›i strictโ€ activeazฤƒ pragma strictฤƒ, ceea ce vฤƒ va face sฤƒ vฤƒ declaraศ›i variabilele cu cuvรขntul cheie.

Aceasta este o practicฤƒ bunฤƒ de programare

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

Rezultat: Eroare

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

ieศ™ire:

10

Perl Array

Ce este Perl Array?

Un Array este un tip special de variabilฤƒ care stocheazฤƒ date sub forma unei liste; fiecare element poate fi accesat folosind numฤƒrul de index care va fi unic pentru fiecare element. Puteศ›i stoca numere, ศ™iruri de caractere, valori flotante etc. รฎn matricea dvs. Arata grozav. Deci, cum creฤƒm o matrice รฎn Perl? รŽn Perl, puteศ›i defini o matrice folosind caracterul โ€ž@โ€ urmat de numele pe care doriศ›i sฤƒ-l daศ›i. Sฤƒ luฤƒm รฎn considerare definirea unui tablou รฎn Perl.

@matricea mea;

Acesta este modul รฎn care definim o matrice รฎn Perl; s-ar putea sฤƒ vฤƒ gรขndiศ›i cum trebuie sฤƒ stocฤƒm datele รฎn el. Existฤƒ diferite moduri de stocare a datelor รฎntr-o matrice. Aceasta depinde de modul รฎn care รฎl vei folosi.

my @array=(a,b,c,d);
print @array;

ieศ™ire:

a B C D

Aceasta este o matrice cu 4 elemente รฎn ea.

Indicele matricei รฎncepe de la 0 ศ™i se terminฤƒ pรขnฤƒ la dimensiunea maximฤƒ declaratฤƒ, รฎn acest caz, dimensiunea maximฤƒ a indexului este 3.

Exemplu de matrice Perl

Exemplu de matrice Perl

De asemenea, puteศ›i declara o matrice รฎn modul de mai sus; singura diferenศ›ฤƒ este cฤƒ stocheazฤƒ datele รฎntr-o matrice, considerรขnd un spaศ›iu alb ca delimitator. Aici, qw() รฎnseamnฤƒ cuvรขnt citat. Semnificaศ›ia acestei funcศ›ii este de a genera o listฤƒ de cuvinte. Puteศ›i utiliza qw รฎn mai multe moduri pentru a declara o matrice.

@array1=qw/a b c d/;
@array2= qw' p q r s'; 
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;

ieศ™ire:

abcdpqrsvxyz

Sฤƒ presupunem cฤƒ doriศ›i sฤƒ atribuiศ›i o valoare lui 5th element al unui tablou, cum vom face asta.

$array [4] ='e';

Matrice secvenศ›ialฤƒ

Matricele secvenลฃiale sunt acelea รฎn care stocaลฃi datele secvenลฃial. Sฤƒ presupunem cฤƒ doriศ›i sฤƒ stocaศ›i 1-10 numere sau alfabete az รฎntr-o matrice. รŽn loc sฤƒ tastaศ›i toate literele, puteศ›i รฎncerca ceva ca mai jos -

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

ieศ™ire:

12345678910

Dimensiunea matricei Perl

Avem o matrice care este deja disponibilฤƒ ศ™i nu ศ™tiศ›i care este dimensiunea matricei respective, deci care este modalitatea posibilฤƒ de a o gฤƒsi.

@array= qw/a b c d e/;
print $size=scalar (@array);

Putem obศ›ine dimensiunea unei matrice fฤƒrฤƒ a folosi funcศ›ii? Da putem.

@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

ieศ™ire:

5

5

Matrice dinamicฤƒ

Metoda de mai sus de declarare a unui tablou este numitฤƒ matrice statice, unde cunoaศ™teศ›i dimensiunea unei matrice.

Ce este Dynamic Array?

Matricele dinamice sunt cele pe care le declaraศ›i fฤƒrฤƒ a specifica nicio valoare pentru ele. Deci, cรขnd mai exact stocฤƒm valori รฎn acea matrice? Simplu, le stocฤƒm รฎn timpul rulฤƒrii. Iatฤƒ un program simplu pentru asta.

Vom folosi cรขteva funcศ›ii Perl รฎncorporate pentru a face aceastฤƒ sarcinฤƒ.

my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \nโ€;
# This is a special variable which stores the current value.
}

ieศ™ire:

Asta e

un fel de dyn

MIC

rr

y

Funcศ›ia de รฎmpฤƒrศ›ire รฎmparte conศ›inutul ศ™irului รฎntr-o matrice pe baza delimitatorului furnizat acestuia. Aceastฤƒ funcศ›ie va elimina ศ™i delimitatorul din ศ™ir, รฎn acest caz, este โ€žaโ€;

Push, Pop, shift, unshift pentru matrice Perl:

Aceste funcศ›ii pot fi folosite รฎn Perl pentru a adฤƒuga/ศ™terge elemente ale matricei.

  • Perl Push: adaugฤƒ un element de matrice la sfรขrศ™itul unui tablou existent.
  • Perl Pop: eliminฤƒ ultimul element dintr-o matrice.
  • Perl Shift: eliminฤƒ primul element dintr-o matrice.
  • Perl Unshift: adaugฤƒ un element la รฎnceputul unui tablou.

Funcศ›ii matrice รฎn Perl

Sฤƒ vedem un exemplu รฎn care putem folosi funcศ›iile de mai jos.

@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu");                                             # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri");                                          # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n";                                 # remove one element from the last of an array.
shift(@days);                                                   # remove one element from the beginning of an array.
print "5th when shift : @days\n";

ieศ™ire:

1: Luni Mar Mier

Al doilea la apฤƒsare: Luni Mar Mier Joi

Al 3-lea cรขnd nu se schimbฤƒ: Vin Luni Mar Mier Joi

Al 4-lea cรขnd pop: Vin Luni Mar Mier

A 5-a la schimbul: Luni Mar Mier

Perl Hashes

De ce avem nevoie de Hash?

Am รฎnvฤƒศ›at deja despre scalari ศ™i matrice รฎn secศ›iunile anterioare.

Ce fac mai exact scalarii? Stocheazฤƒ doar numere รฎntregi ศ™i ศ™iruri de caractere.

Ce fac mai exact matricele? Este o colecศ›ie de scalari, รฎn care accesaศ›i fiecare element al unui tablou folosind indici. Dar, este aceasta idee bunฤƒ sฤƒ folosiศ›i o matrice atunci cรขnd aveศ›i sute ศ™i mii de รฎnregistrฤƒri? Vom uita ce indice are ce valoare. Pentru a depฤƒศ™i aceastฤƒ situaศ›ie avem ceva de genul perl hash.

Ce sunt hashe-urile?

Un hash poate conศ›ine, de asemenea, atรขt de mulศ›i scalari cรขt poate conศ›ine matricea. Singura diferenศ›ฤƒ este cฤƒ nu avem niciun index, mai degrabฤƒ avem chei ศ™i valori. Un hash poate fi declarat, รฎncepรขnd cu % urmat de numele hash-ului. Sฤƒ vedem un exemplu cum putem defini un hash Perl ศ™i cum รฎl putem diferenศ›ia de matrice

Luaศ›i รฎn considerare un exemplu de trei persoane ศ™i vรขrstele lor sunt reprezentate รฎntr-o matrice.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

ieศ™ire:

Sainath33Krishna24Shruthi25

รŽn acest fel, este dificil sฤƒ cunoaศ™tem vรขrstele individuale, deoarece trebuie sฤƒ ne amintim atรขt locaศ›iile index ale numelui, cรขt ศ™i vรขrsta tuturor oamenilor. Poate fi simplu cรขnd ai 3 nume, dar cรขnd ai 1000 sau mai multe? Tu sti raspunsul.

Hashuri รฎn Perl

Acest lucru รฎl putem depฤƒศ™i folosind un hash.

Exemplu de hash:

print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.

ieศ™ire:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Acum am declarat un hash, grozav!! Dar, cum รฎl accesฤƒm sau รฎl imprimฤƒm? Fiecare element din hash ar trebui sฤƒ fie accesat cu cheia asociatฤƒ pentru care va fi atribuitฤƒ o valoare. Deci, existฤƒ o mapare unu-unu รฎntre fiecare cheie ศ™i valoare din hash.

Pentru a imprima vรขrsta oricฤƒrei persoane, trebuie doar sฤƒ vฤƒ amintiศ›i numele acelei persoane.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

Poate v-aศ›i รฎntrebat de ce am folosit $hash{KeyName}, amintiศ›i-vฤƒ cฤƒ un hash este din nou o colecศ›ie de scalari. Deci, putem folosi $ care reprezintฤƒ scalar pentru a accesa fiecare element hash.

Exemplu de hash รฎn Perl

Notฤƒ: Fiecare cheie din hash ar trebui sฤƒ fie unicฤƒ, altfel va suprascrie valoarea dvs., care a fost atribuitฤƒ anterior.

Cum putem atribui un hash altui hash? Simplu, la fel ca noi pentru

De asemenea, putem imprima รฎntregul hash.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

ieศ™ire:

Tom23

Adฤƒugaศ›i hashuri Perl

Dupฤƒ cum puteศ›i vedea, avem deja un hash %newHash, iar acum trebuie sฤƒ adฤƒugฤƒm mai multe intrฤƒri รฎn el.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

ieศ™ire:

Jim25John26Harry27

Tasta Perl Delete

Poate doriศ›i sฤƒ ศ™tergeศ›i o intrare dintr-un hash. Aศ™a putem face asta.

delete $newHash{'Jim'};#This will delete an entry from the hash.

Delete este o funcศ›ie รฎncorporatฤƒ a Perl. Aici, vom vedea un exemplu de atribuire a unui hash unei matrice.

@array=%newHash;
print "@array";

Notฤƒ: Ori de cรขte ori imprimaศ›i un hash sau cรขnd stocaศ›i hash รฎntr-o matrice. Ordinea poate fi รฎntotdeauna diferitฤƒ. Nu este mereu la fel.

Putem aloca unui tablou doar chei sau valori ale unui hash.

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

Pentru a elimina toate intrฤƒrile din hash, putem atribui direct hash-ul la null.

%newHash=();# Aceasta va redefini hash-ul fฤƒrฤƒ intrฤƒri.

Instrucศ›iuni condiศ›ionale Perl

Putem folosi instrucศ›iuni condiศ›ionale รฎn Perl. Deci, ce sunt declaraศ›iile condiศ›ionate? Declaraศ›iile condiศ›ionate sunt acelea รฎn care de fapt verificaศ›i dacฤƒ anumite circumstanศ›e sunt รฎndeplinite รฎn codul dvs.

Gรขndeศ™te-te la un exemplu, cumperi niศ™te fructe ศ™i nu-ศ›i place cฤƒ preศ›ul este mai mare de 100 de dolari. Deci, regula aici este 100 de dolari.

Perl acceptฤƒ douฤƒ tipuri de instrucศ›iuni condiศ›ionale; sunt dacฤƒ ศ™i dacฤƒ nu.

Perl Dacฤƒ

Dacฤƒ blocul de cod va fi executat, cรขnd condiศ›ia este adevฤƒratฤƒ.

Instrucศ›iuni condiศ›ionale Perl

my $a=5;
if($a==5)
{
   print "The value is $a";
}

ieศ™ire:

5

Perl Dacฤƒ Altceva

Asta aratฤƒ bine. Sฤƒ ne gรขndim la o situaศ›ie รฎn care $a nu este 5.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

ieศ™ire:

Valoarea este 10 โ€” FAIL

รŽn acest fel, putem controla o singurฤƒ condiศ›ie la un moment dat. Este o limitare? Nu, puteศ›i controla ศ™i diverse condiศ›ii folosind if... elsif... else.

Perl Else Dacฤƒ

my $a=5;
if($a==6)
{
    print "Executed If block -- The value is $a";
}
elsif($a==5)
{
    print "Executed elsif block --The value is $a";
}
else
{
    print "Executed else block โ€“ The value is $a";
}

ieศ™ire:

Bloc elsif executat โ€“ Valoarea este 5

รŽn cazul de mai sus, blocul elsif va fi executat deoarece $a este egal cu 5.

Ar putea exista situaศ›ii รฎn care atรขt blocurile de cod if ศ™i elsif vor fi eศ™uate. รŽn acest scenariu, blocul de cod else va fi executat. De fapt, puteศ›i elimina verificarea codului else dacฤƒ nu doriศ›i sฤƒ includeศ›i.

Perl Imbricat If

รŽn acest caz, puteศ›i utiliza if code block รฎntr-un alt cod if.

my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
  print "Inside 1st if block";
        if($a<5){
                print "Inside 2nd if block --- The value is $a";
        }
        else{
                print " Inside 2nd else block --- The value is $a";
        }
	}
	else{
        	print "Inside 1st else block โ€“ The value is $a";
    }

ieศ™ire:

รŽn interiorul primului bloc else โ€“ valoarea este 1

Executaศ›i acelaศ™i cod schimbรขnd valoarea lui $a; poti afla restul.

Perl Dacฤƒ nu

Ai deja o idee ce se รฎntรขmplฤƒ dacฤƒ (dacฤƒ condiศ›ia este adevฤƒratฤƒ, va executa blocul de cod). Cu excepศ›ia cazului รฎn care este opusฤƒ dacฤƒ, dacฤƒ blocul de cod nu va fi executat dacฤƒ condiศ›ia este falsฤƒ.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

ieศ™ire:

รŽn interiorul primului bloc else โ€“ valoarea este 1

Ghici care va fi rezultatul. Ai dreptate!!!!!. Ieศ™irea va fi instrucศ›iunea de tipฤƒrire a blocului else. Din cauza condiศ›iei รฎn dacฤƒ blocul de cod nu este adevฤƒrat, reศ›ineศ›i dacฤƒ blocul nu va fi executat numai dacฤƒ condiศ›ia este falsฤƒ. Schimbaศ›i valoarea lui $a ศ™i executaศ›i codul, veศ›i vedea diferenศ›a.

Perl Folosind if

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

ieศ™ire:

รŽn interiorul blocului else

Folosind dacฤƒ nu

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

ieศ™ire:

รŽnฤƒuntru, dacฤƒ nu Block

Perl Loops โ€“ Structuri de control

Perl acceptฤƒ structuri de control similare cu alte limbaje de programare. Perl acceptฤƒ patru tipuri de structuri de control pentru, foreach, while ศ™i until. Folosim aceste instrucศ›iuni pentru a executa รฎn mod repetat un anumit cod.

Pentru bucla Perl

Pentru blocul de cod se va executa pรขnฤƒ cรขnd condiศ›ia este รฎndeplinitฤƒ. Sฤƒ luฤƒm un exemplu despre cum se face bucla Perl รฎntr-o matrice.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

ieศ™ire:

Valoarea indicelui matricei 0 este 1

Valoarea indicelui matricei 1 este 2

Valoarea indicelui matricei 2 este 3

Valoarea indicelui matricei 3 este 4

Valoarea indicelui matricei 4 este 5

Valoarea indicelui matricei 5 este 6

Valoarea indicelui matricei 6 este 7

Valoarea indicelui matricei 7 este 8

Valoarea indicelui matricei 8 este 9

Valoarea indicelui matricei 9 este 10

Aici, รฎn expresia pentru (), sunt incluse multe afirmaศ›ii. Existฤƒ un sens pentru fiecare dintre ele.

pentru ( iniศ›ializare; condiศ›ie; creศ™tere)

Iatฤƒ un alt mod de utilizare pentru.

for(1..10)
{
    print "$_ n";
    print "\n";
}

ieศ™ire:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

Pentru fiecare declaraศ›ie poate fi folositฤƒ รฎn acelaศ™i mod ca for; diferenศ›a principalฤƒ este cฤƒ nu avem nicio verificare ศ™i creศ™tere a stฤƒrii รฎn acest sens.

Sฤƒ luฤƒm acelaศ™i exemplu cu foreach perl.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

ieศ™ire:

Valoarea este 1

Valoarea este 2

Valoarea este 3

Valoarea este 4

Valoarea este 5

Valoarea este 6

Valoarea este 7

Valoarea este 8

Valoarea este 9

Valoarea este 10

Foreach preia fiecare element al unui tablou ศ™i atribuie acea valoare lui $var pentru fiecare iteraศ›ie. De asemenea, putem folosi $_ pentru acelaศ™i lucru.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

ieศ™ire:

Valoarea este 1

Valoarea este 2

Valoarea este 3

Valoarea este 4

Valoarea este 5

Valoarea este 6

Valoarea este 7

Valoarea este 8

Valoarea este 9

Valoarea este 10

Acest lucru aratฤƒ bine pentru accesarea matricelor. Ce zici de hashuri, cum putem obศ›ine chei hash ศ™i valori folosind foreach?

Putem folosi foreach pentru a accesa cheile ศ™i valorile hash-ului prin bucla.

bucla pentru รฎn Perl

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

ieศ™ire:

bฤƒuturฤƒ conศ›inรขnd un drog

Tom

Oalฤƒ de noapte

S-ar putea sฤƒ vฤƒ รฎntrebaศ›i de ce am folosit Keys รฎn foreach(). Keys este o funcศ›ie รฎncorporatฤƒ a lui Perl, unde putem accesa rapid cheile hash-ului. Ce zici de valori? Putem folosi funcศ›ia values โ€‹โ€‹pentru a accesa valorile hash-ului.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
	 print " the value is $value \n";
}

ieศ™ire:

valoarea este 24

valoarea este 23

valoarea este 25

Perl รฎn timp ce

Bucla Perl While este o structurฤƒ de control, รฎn care blocul de cod va fi executat pรขnฤƒ cรขnd condiศ›ia este adevฤƒratฤƒ.

Blocul de cod va ieศ™i numai dacฤƒ condiศ›ia este falsฤƒ.

Sฤƒ luฤƒm un exemplu pentru bucla Perl While.

While buclฤƒ รฎn Perl

Iatฤƒ o problemฤƒ, care va necesita introducerea utilizatorului ศ™i nu va ieศ™i pรขnฤƒ la numฤƒrul furnizat ca โ€ž7โ€.

#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
	print "Guess a Number Between 1 and 10 \n ";
	$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"

ieศ™ire:

Ghiciศ›i un numฤƒr รฎntre 1 ศ™i 10

9

Ghiciศ›i un numฤƒr รฎntre 1 ศ™i 10

5

Ghiciศ›i un numฤƒr รฎntre 1 ศ™i 10

7

Ai ghicit numฤƒrul norocos 7

รŽn exemplul de mai sus, condiศ›ia while nu va fi adevฤƒratฤƒ dacฤƒ introducem o altฤƒ intrare decรขt โ€ž7โ€.

Dacฤƒ vedeศ›i cum funcศ›ioneazฤƒ while aici, blocul de cod se va executa numai dacฤƒ condiศ›ia รฎntr-un timp este adevฤƒratฤƒ.

Perl do-while

Bucla Do while se va executa cel puศ›in o datฤƒ chiar dacฤƒ condiศ›ia din secศ›iunea while este falsฤƒ.

Sฤƒ luฤƒm acelaศ™i exemplu folosind do while.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

ieศ™ire:

10

9

8

7

6

5

4

3

2

1

Acum valoarea este mai micฤƒ de 1

Perl pรขnฤƒ cรขnd

Pรขnฤƒ cรขnd blocul de cod este similar cu excepศ›ia cazului รฎntr-o declaraศ›ie condiศ›ionatฤƒ. Aici, blocul de cod se va executa numai dacฤƒ condiศ›ia pรขnฤƒ la bloc este falsฤƒ.

Sฤƒ luฤƒm acelaศ™i exemplu pe care l-am folosit la un timp.

Iatฤƒ o problemฤƒ, care va necesita intrare de la utilizator ศ™i nu va ieศ™i pรขnฤƒ cรขnd numele furnizat ca altul decรขt โ€žsaiโ€.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

ieศ™ire:

Introdu orice nume sai

Perl pรขnฤƒ la:

Do until poate fi folosit doar atunci cรขnd avem nevoie ca o condiศ›ie sฤƒ fie falsฤƒ ศ™i ar trebui sฤƒ fie executatฤƒ cel puศ›in o datฤƒ.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

ieศ™ire:

Introdu orice nume Howard

Introdu orice nume Sheldon

Introdu orice nume sai

Executaศ›i coduri de exemplu while, do-while, until ศ™i do-until pentru a vedea diferenศ›a.

Perl OperaTdR

Ce Este Operator?

Operatori รฎn limbajul computerului indicฤƒ o acศ›iune care poate fi efectuatฤƒ asupra unui set de variabile sau valori pe care computerul le poate รฎnศ›elege. Perl a รฎncorporat majoritatea Operatori din limbajul C. Perl are mulศ›i operatori รฎn comparaศ›ie cu alte limbaje de programare. Operatorii sunt clasificaศ›i ca operatori aritmetici, logici, relaศ›ionali ศ™i de atribuire.

Aritmeticฤƒ Operators:

Operatorii aritmetici sunt cei care pot fi utilizaศ›i pentru a efectua unele operaศ›ii matematice de bazฤƒ. Aceศ™ti operatori aritmetici sunt operatori binari รฎn care avem nevoie de douฤƒ argumente pentru a efectua o operaศ›ie de bazฤƒ. De asemenea, putem folosi operatori unari pentru alte operaศ›ii de bazฤƒ; puteศ›i vedea diferenศ›a รฎn exemple de mai jos.

OperaTdR Descriere Exemplu

+

Operaศ›ie de adunare utilizatฤƒ pentru adฤƒugarea a douฤƒ valori sau variabile

deลฃinรขnd valori

$x=5+6; # sau

$y=6;

$z=$x+$y;

-

Operator de scฤƒdere utilizat pentru scฤƒderea a douฤƒ valori sau variabile care deศ›in valori

$x=6-5; # sau

$y=6;

$z=$x-$y;

*

Operator de multiplicare utilizat pentru รฎnmulศ›irea a douฤƒ valori sau variabile care deศ›in valori

$x=6*5; # sau

$y=6;

$z=$x*$y;

/

Operatorul de divizare utilizat pentru รฎmpฤƒrศ›irea a douฤƒ valori sau variabile care deศ›in valori

$x=36/6; # sau

$y=6;

$z=$x/$y;

**

Operatorul exponenศ›ial utilizat pentru a furniza exponent ศ™i a obศ›ine valoarea.

Ex: 22 = 43 = 27

$x=5**5; # sau

$x=4;

$y=2;

$z=$x**$y;

%

Operatorul de modul folosit pentru a obศ›ine memento รฎn timpul รฎmpฤƒrศ›irii a douฤƒ valori sau variabile care deศ›in valori

$x=5%2; # sau

$x=10;

$y=2;

$z=$x % $y;

++

Operator de adฤƒugare unar pentru a incrementa valoarea unei variabile cu 1

$x=5;

$x++;

Or

++$x;

-

Operatorul de scฤƒdere unarฤƒ pentru a reduce valoarea unei variabile cu 1

$x=5;

$xโ€“; # post decrement

Or

โ€“$x;# รฎnainte de decrement

Exemplu pentru a finaliza toate operaศ›iunile de mai sus.

my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");

ieศ™ire:

Adunarea dintre 10 ศ™i 2 este 12

Sub 10 ศ™i 2 este 8

Mul de 10 ศ™i 2 este 20

Div de 10 ศ™i 2 este 5

Exp de 10 ศ™i 2 este 100

Mod-ul 10 ศ™i 2 este 0

Cesiune Operators:

Operatorii de atribuire pur ศ™i simplu atribuie valori variabilelor, dar mai este un lucru pe care trebuie sฤƒ-l reศ›inem aici, operatorii de atribuire vor efectua ศ™i operaศ›ii aritmetice ศ™i vor atribui noua valoare aceleiaศ™i variabile pe care este efectuatฤƒ operaศ›ia.

OperaTdR Descriere Exemplu

+=

Operatorul de adฤƒugare utilizat pentru adฤƒugarea ศ™i atribuirea valorii aceleiaศ™i variabile

$x=4;

$x+=10;

-=

Operatorul de scฤƒdere utilizat pentru scฤƒderea ศ™i atribuirea valorii aceleiaศ™i variabile

$x=4;

$x-=10;

*=

Operator de multiplicare utilizat pentru adฤƒugarea ศ™i atribuirea valorii aceleiaศ™i variabile

$x=4;

$x*=10;

/=

Operatorul de divizare utilizat pentru รฎmpฤƒrศ›irea ศ™i atribuirea valorii aceleiaศ™i variabile

$x=4;

$x/=10;

**=

Operatorul exponenศ›ial utilizat pentru obศ›inerea exponentului ศ™i atribuirea valorii aceleiaศ™i variabile

$x=4;

$x**=10;

%=

Operator de modul utilizat pentru obศ›inerea unui memento รฎn timpul รฎmpฤƒrศ›irii ศ™i atribuirea valorii aceleiaศ™i variabile

$x=10;

$x%=4;

Exemplu pentru a finaliza toate operaศ›iunile de mai sus.

my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");

ieศ™ire:

Adฤƒugaศ›i = 15

Sub= 10

Mul = 50

Div = 10

logic ศ™i relaศ›ional Operators:

Perl foloseศ™te operatori logici pentru a compara numere ศ™i ศ™iruri. De cele mai multe ori operatorii logici sunt utilizaศ›i รฎn instrucศ›iunile condiศ›ionate.

logic ศ™i relaศ›ional Operators รฎn Perl

logic ศ™i relaศ›ional Operators รฎn Perl

OperaTdR Descriere

==sau echivalentul

Operator folosit pentru a verifica dacฤƒ ambele variabile sunt egale

!=Sau ne

Operator folosit pentru a verifica dacฤƒ ambele variabile nu sunt egale

> sau gt

Operator folosit pentru a verifica dacฤƒ

A este mai mare decรขt B

<or lt

Operator folosit pentru a verifica dacฤƒ

A este mai mic decรขt B

>=sau ge

Operator folosit pentru a verifica dacฤƒ

A este mai mare sau egal cu B

<=sau le

Operator folosit pentru a verifica dacฤƒ

A este mai mic sau egal cu B

|| sau sau

Operator folosit pentru a verifica fie A sau B este valoarea de pฤƒstrare

&&sau ศ™i

Operator folosit pentru a verifica atรขt A cรขt ศ™i B are valoarea de pฤƒstrare

Sฤƒ luฤƒm un exemplu รฎn care putem explica toate scenariile.

my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}

ieศ™ire:

Adevฤƒrat - egal cu 5 ศ™i 5

Adevฤƒrat - nu este egal cu 6 ศ™i 7

Adevฤƒrat - 7 mai mare decรขt 6

Adevฤƒrat - 6 mai puศ›in decรขt 7

Adevฤƒrat - 6 mai puศ›in decรขt 7

Adevฤƒrat - 7 mai mare decรขt 6

Puteศ›i vedea exemple de operatori logici รฎn secศ›iunile ulterioare.

Variabile speciale Perl

Ce este Perl Special Variables?

Variabilele speciale รฎn Perl sunt cele care au o anumitฤƒ semnificaศ›ie predefinitฤƒ. Aceste variabile sunt desemnate fie cu nume real, fie cu simboluri de punctuaศ›ie. Avem o variabilฤƒ specialฤƒ pentru toate variabilele suportate de Perl, cum ar fi variabile speciale scalare, variabile speciale Array, variabile speciale hash. Majoritatea variabilelor speciale pe care le folosim sunt scalari.

Cรขnd vrem sฤƒ folosim variabila specialฤƒ cu numele ei, atunci trebuie sฤƒ รฎncฤƒrcฤƒm un modul Perl โ€žutilizaศ›i englezaโ€, pentru a spune explicit interpretului Perl cฤƒ vom folosi variabile speciale folosind numele sฤƒu.

Variabile speciale scalare

Variabil Descriere

$_$ARG

Aceasta este variabila implicitฤƒ care stocheazฤƒ valorile curente.

$0 sau $PROGRAM_NAME

Stocheazฤƒ numele fiศ™ierului scriptului Perl.

$/

Separatorul de รฎnregistrare de intrare, acesta are o valoare implicitฤƒ de โ€ž\nโ€, care este caracterul de nouฤƒ linie

$.

Deศ›ine numฤƒrul de linie curent al fiศ™ierului care este citit

$,

Separator de cรขmpuri de ieศ™ire, acesta este utilizat รฎn principal de instrucศ›iunea print(). รŽn mod implicit, valoarea acesteia este setatฤƒ la 0, putem schimba valoarea acestei variabile.

$\

Separator de รฎnregistrare de ieศ™ire, valoarea acestei variabile va fi goalฤƒ; รฎi putem atribui orice valoare, care va fi folositฤƒ de instrucศ›iunea print() รฎn timp ce imprimฤƒm rezultatul.

$#

Aceastฤƒ variabilฤƒ este utilizatฤƒ pentru formatul de ieศ™ire รฎn timpul tipฤƒririi numerelor.

$%$FORMAT_PAGE_NUMBER

Va pฤƒstra numฤƒrul de paginฤƒ curent al fiศ™ierului citit.

$=$FORMAT_LINES_PER_PAGE

Va pฤƒstra lungimea curentฤƒ a paginii a fiศ™ierului citit.

$-$FORMAT_LINES_LEFT

Reศ›ine valoarea numฤƒrului de linii rฤƒmase de imprimat din paginฤƒ.

$~$FORMAT_NAME

Format Nume: Deศ›ine รฎn mod implicit formatul ieศ™irii selectate curent, numele handler-ului fiศ™ierului.

$^$FORMAT_TOP_NAME

Deศ›ine valoarea formatului de antet al handler-ului fiศ™ierului, valoarea implicitฤƒ va fi _TOP urmatฤƒ de numele handle-ului fiศ™ierului.

$|$OUTPUT_AUTOFLUSH

Valoarea implicitฤƒ este zero; aceasta este folositฤƒ pentru a goli buffer-ul de ieศ™ire dupฤƒ fiecare write() sau print().

$$

Va pฤƒstra numฤƒrul procesului de rulare al interpretului Perl.

$?

Cod de stare: Conductฤƒ ศ™i apel de sistem. Starea de revenire a comenzii executate.

$&$PORIT

Folosit รฎn expresiile regulate, acesta va reศ›ine un ศ™ir al ultimului model de potrivire reuศ™itฤƒ.

$`$Premeci

Folosit รฎn expresiile regulate, acesta va menศ›ine ศ™irul precedat de ultima potrivire reuศ™itฤƒ a modelului.

$'$POSTMECI

Folosit รฎn expresiile regulate, acesta va deศ›ine un ศ™ir urmat de ultima potrivire reuศ™itฤƒ a modelului.

$+$LAST_PAREN_MATCH

ศšine ศ™irul ultimei paranteze care se potriveศ™te cu ultimul model de cฤƒutare.

$

1 USD, 2 USD, 3 USD... Menศ›ine valorile modelului potrivite รฎn ordine.

$[

Primul index: Array, un subศ™ir.

$]

O versiune de Perl.

$โ€

Separatorul folosit pentru elementele listei, valoarea implicitฤƒ este un spaศ›iu alb.

$;

Separator de indice utilizat รฎn tablourile multidimensionale

$!

รŽn context numeric, tipฤƒreศ™te numฤƒrul erorii. รŽn contextul ศ™irului, tipฤƒriศ›i eroarea.

$@

Va pฤƒstra informaศ›iile despre eroarea de sintaxฤƒ, utilizate atunci cรขnd se utilizeazฤƒ eval().

$<

Deศ›ine UID-ul real (ID-ul utilizatorului) al procesului care ruleazฤƒ scriptul.

$>

Deศ›ine UID-ul efectiv al procesului care ruleazฤƒ scriptul.

$(

Deศ›ine GID-ul real (ID de grup) al procesului care ruleazฤƒ scriptul.

$)

Deศ›ine GID-ul efectiv al procesului care ruleazฤƒ scriptul.

$^D$DEBUGARE

Deศ›ine valoarea curentฤƒ a steagurilor de depanare.

$^C

Menศ›ine valoarea curentฤƒ a steagului atunci cรขnd este utilizat comutatorul de linie de comandฤƒ โ€“c.

$^F

Descriptorul maxim al fiศ™ierului de sistem, valoarea implicitฤƒ, este setat la 2

$^I$INPLACE_EDIT

Deศ›ine valoarea comutatorului de linie de comandฤƒ โ€“i.

$^M

Pool-ul de memorie special poate fi utilizat atunci cรขnd scriptul Perl moare cu o eroare de memorie lipsitฤƒ.

$^O$OSNAME

Operainformaศ›iile de sistem sunt stocate. โ€žLinuxโ€ pentru sistemele Linux, โ€žmswin32โ€ pentru Windows sisteme.

$^T$BASETIME

Timpul รฎn care scripturile ruleazฤƒ รฎn secunde.

$^W$AVERTISMENT

Valoarea curentฤƒ a comutatorului de linie de comandฤƒ โ€“w. Comutator de avertizare.

$ARGV

Numele fiศ™ierului curent, cรขnd se foloseศ™te <>.

Variabile speciale ale matricei:

Variabil Descriere

@INC

Conศ›ine o listฤƒ de cฤƒi, unde modulele sau scripturile bibliotecii Perl pot fi analizate รฎn timp ce se executฤƒ scriptul curent. Acest @INC este folosit de utilizare ศ™i necesitฤƒ instrucศ›iuni pentru a cฤƒuta acele cฤƒi pentru modulele bibliotecii.

@ARGV

Stocheazฤƒ argumentele liniei de comandฤƒ transmise.

@_

Folosit รฎn subrutine, รฎn timp ce trece parametrii la subrutine.

@F

Aceasta este matricea รฎn care sunt stocate liniile de intrare cรขnd auto split โ€“a (este folosit comutatorul din linia de comandฤƒ).

Variabile speciale Hash:

Variabil Descriere

%INC

Numele fiศ™ierului va fi cheile; valorile vor fi calea cฤƒtre acele fiศ™iere. Folosit de do, use and require.

%ENV

Variabilele de mediu ale sistemului.

%SIG

Signalmanipulatorul lui.

Expresia regulatฤƒ Perl

Ce este expresia regulatฤƒ?

Expresia regulatฤƒ Perl este suficient de puternicฤƒ รฎn potrivirea tiparelor ศ™irurilor dintr-o declaraศ›ie sau un grup de instrucศ›iuni. Expresiile regulate sunt folosite mai ales รฎn analizarea textului, potrivirea modelelor ศ™i multe altele pe baza cerinศ›elor. Avem anumiศ›i operatori, care sunt utilizaศ›i รฎn mod special de legarea modelului de expresii regulate =~ ศ™i !~, Aceศ™tia sunt operatori de testare ศ™i de atribuire.

Expresie uzuala Operatori

Expresie uzuala Operators รฎn Perl

Expresie uzuala Operators รฎn Perl

  • Perl Match โ€” m//
  • Substitut Perl โ€“ s///
  • Transliterat Perl โ€“ tr///

รŽnainte de a merge mai departe, trebuie sฤƒ ศ™tim cรขteva lucruri despre expresia regulatฤƒ; existฤƒ anumite lucruri, cum ar fi caracterele meta, metacaractere รฎn sintaxa Perl Regex.

Mangal Sens

\

Special sau citat

*

Potriviศ›i 0 sau mai multe caractere

+

Potriviศ›i 1 sau mai multe caractere

?

Potriviศ›i 0 sau 1 caracter

|

Poate fi folosit pentru a potrivi modele alternative

()

Folosit pentru a stoca modelul potrivit

[]

Setul de caractere poate fi transmis. Folosit special pentru numere ศ™i alfabete.

{}

Folosit pentru a furniza numฤƒrul de timp รฎn care poate fi efectuatฤƒ meciul.

^

รŽnceputul ศ™irului

$

Sfรขrศ™itul ศ™irului

\w

Folosit pentru a potrivi un singur caracter sau cuvรขnt care poate fi alfanumeric, inclusiv โ€ž_โ€

\W

Potriviศ›i orice altceva decรขt alfanumeric

\s

Folosit pentru a potrivi spaศ›iile albe

\S

Potriviศ›i orice altceva decรขt spaศ›iul alb

\d

Potriviศ›i numerele. Nu valori zecimale ศ™i valori negative

\D

Potriviศ›i orice altceva decรขt numere.

\t

Potriviศ›i spaศ›iul pentru file

\n

Potriviศ›i noua linie

Cele de mai sus sunt setul de caractere care pot fi folosite รฎn timpul potrivirii modelelor.

Sฤƒ vedem cรขteva exemple.

Luaศ›i รฎn considerare o situaศ›ie รฎn care utilizatorul oferฤƒ o anumitฤƒ intrare รฎn timpul execuศ›iei scriptului ศ™i dorim sฤƒ verificฤƒm dacฤƒ utilizatorul a introdus un nume ca intrare sau nu. Trebuie sฤƒ scriem o sintaxฤƒ a expresiei regulate pentru a vฤƒ extrage numele ศ™i a imprima acelaศ™i lucru.

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

ieศ™ire:

Model gฤƒsit

Aici, am scris expresia regulatฤƒ ca /.*(Guru99).*/.* potriveศ™te toate caracterele dintr-un ศ™ir. A '.' รฎn perl regex match se referฤƒ la orice caracter, inclusiv spaศ›iu.

Sฤƒ vedem cum exact putem construi un Regex.

Luaศ›i รฎn considerare un exemplu de ศ™ir de mai multe cuvinte ศ™i cifre ศ™i simboluri speciale precum acesta โ€žBunฤƒ tuturor, acesta este numฤƒrul meu: +91-99298373639โ€;

Regex: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Cuvรขnt spaศ›iu cuvรขnt spaศ›iu cuvรขnt spaศ›iu cuvรขnt spaศ›iu cuvรขnt spaศ›iu cuvรขnt spaศ›iu caracter special : spaศ›iu caracter special + cifre caracter special โ€“ cifre.

Perl Match Operatori

Operatorii de potrivire sunt utilizaศ›i pentru a potrivi un ศ™ir รฎn cadrul unei instrucศ›iuni sau รฎntr-o variabilฤƒ.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

ieศ™ire:

adevฤƒrat

Acest cod mic va afiศ™a โ€žadevฤƒratโ€, deoarece potrivirea modelului perl identificฤƒ ศ™irul รฎntr-o variabilฤƒ. Practic, Perl cautฤƒ textul furnizat รฎn // de-a lungul รฎntregului ศ™ir, chiar dacฤƒ gฤƒseศ™te รฎntr-un singur loc, va returna โ€žadevฤƒratโ€. Modelul poate fi oriunde รฎn variabilฤƒ. Putem รฎncerca sฤƒ รฎnlocuim =~ cu !~ pentru a vedea diferenศ›a dintre aceศ™ti doi operatori.

รŽnlocuire Perl OperaTdR

Acest operator poate fi folosit pentru cฤƒutarea ศ™i รฎnlocuirea oricฤƒrui caracter fie cu nul, fie cu alt caracter.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

ieศ™ire:

violoncel ce mai faci

Notฤƒ: De fapt, putem folosi orice ศ™ir de potrivire a modelului, aศ™a cum am fฤƒcut mai devreme ศ™i รฎn acest operator de รฎnlocuire. Aici am folosit โ€žgiโ€, g-la nivel global, i-ignore majuscule.

Traducere Perl OperaTdR

Acest lucru este similar cu Substituศ›ia, dar nu foloseศ™te nicio expresie regulatฤƒ perl, mai degrabฤƒ putem trece direct valoarea sau un cuvรขnt pe care dorim sฤƒ-l รฎnlocuim.

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

ieศ™ire:

Bunฤƒ vacฤƒ eศ™ti

I/O fiศ™ier Perl

Perl a fost conceput pentru a manipula fiศ™ierele ศ™i operaศ›iunile I/O รฎn mod eficient. Principalul avantaj al Perl este รฎn analiza ศ™i manipularea fiศ™ierelor. Existฤƒ multe funcศ›ii รฎncorporate ศ™i operatori utilizaศ›i รฎn timpul manipulฤƒrii fiศ™ierelor รฎn Perl.

Practic, operaศ›iunile de fiศ™iere care sunt efectuate cu Perl se fac folosind FILEHANDLE. Trebuie sฤƒ definim acest FILEHANDLE รฎn timpul deschiderii unui fiศ™ier pentru citire sau scriere.

รŽn acest tutorial de script Perl, veศ›i รฎnvฤƒศ›a-

Perl Deschideศ›i fiศ™ierul

Putem deschide un fiศ™ier folosind funcศ›ia open() disponibilฤƒ รฎn Perl.

open(FILEHANDLE, "filename or complete path of the file");

Acum am deschis un fiศ™ier, acum apare o รฎntrebare. Este pentru citit sau pentru scris?

Fiศ™ier de citire Perl ศ™i fiศ™ier de scriere Perl

Perl are anumite moduri, care trebuie folosite pentru a citi, scrie sau ataศ™a un fiศ™ier.

Read โ€“ open(my $fh,"<filename or complete path of the file"); 
Write โ€“ open(my $fh,">filename or complete path of the file");
Append โ€“ open(my $fh,">>filename or complete path of the file");

Cรขteva exemple pentru citirea unui fiศ™ier:

Citirea fiศ™ierului รฎn Perl

Luaศ›i รฎn considerare cฤƒ avem un fiศ™ier perl cu numele file.txt ศ™i are cรขteva rรขnduri de text รฎn el. Trebuie sฤƒ deschidem acest fiศ™ier ศ™i sฤƒ imprimฤƒm la fel.

open(FH,"<file.txt"); 
while(<FH>)    # Looping the file contents using the FH as a filehandle. 
{
	print "$_";
}
close FH;

or

open(FH,"<file.txt"); 
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
	print "$_";
}
close FH;

Aceasta va imprima conศ›inutul fiศ™ierului pe ecranul de ieศ™ire.

Acum, vom scrie un program pentru a crea ศ™i a scrie date รฎntr-un fiศ™ier perl.

Scrierea fiศ™ierului รฎn Perl

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

Aceasta va scrie intrarea furnizatฤƒ รฎn timpul rulฤƒrii ศ™i va crea un fiศ™ier test.txt care va avea intrare.

Modul de mai sus va รฎncerca รฎntotdeauna sฤƒ creeze un fiศ™ier numit test.txt ศ™i va scrie intrarea รฎn fiศ™ier; vom scrie la fel pentru a adฤƒuga fiศ™ierul.

Operaศ›ie de adฤƒugare a fiศ™ierelor รฎn Perl

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Moduri Descriere

<

Citiศ›i

+<

Citeศ™te ศ™i scrie

>

Creeazฤƒ, scrie ศ™i trunchiazฤƒ

+>

Citiศ›i, scrieศ›i, creaศ›i ศ™i trunchiaศ›i

>>

Scrie, anexeazฤƒ ศ™i creeazฤƒ

+>>

Citiศ›i, scrieศ›i, anexaศ›i ศ™i creaศ›i

Acum cฤƒ trebuie sฤƒ vedem cum sฤƒ citim, sฤƒ scriem ศ™i sฤƒ ataศ™ฤƒm fiศ™iere folosind exemple de bazฤƒ.

Vom mai vedea cรขteva exemple ศ™i alte funcศ›ii care vฤƒ ajutฤƒ sฤƒ รฎnศ›elegeศ›i mai multe despre fiศ™iere.

Perl Tell

Aceastฤƒ metodฤƒ va returna poziศ›ia curentฤƒ a FILEHANDLER รฎn octeศ›i dacฤƒ este specificatฤƒ altfel va considera ultima linie ca poziศ›ie.

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

Perl Seek

Funcศ›ia de cฤƒutare este similarฤƒ cu apelul de sistem fseek. Aceastฤƒ metodฤƒ este utilizatฤƒ pentru a poziศ›iona indicatorul fiศ™ierului รฎntr-o locaศ›ie specificฤƒ prin specificarea octeศ›ilor urmaศ›i fie de รฎnceputul indicatorului de fiศ™ier, fie de sfรขrศ™itul indicatorului de fiศ™ier.

seek FH, bytes, WHENCE;

WHENCE este poziศ›ia pointerului fiศ™ierului pentru a รฎncepe. Zero รฎl va seta de la รฎnceputul fiศ™ierului.

Exemplu: Lฤƒsaศ›i input.txt sฤƒ aibฤƒ cรขteva date precum โ€žBunฤƒ ziua, aceasta este lumea meaโ€.

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

ieศ™ire:

aceasta este lumea mea

Perl Deconectare

Deconectarea este folositฤƒ pentru a ศ™terge fiศ™ierul.

unlink("filename or complete file path");

Gestionarea directoarelor:

De asemenea, putem gestiona directoare prin care putem gestiona mai multe fiศ™iere.

sฤƒ vedem cum sฤƒ deschidem un director. Putem folosi metodele opendir ศ™i readdir.

opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.

while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
   print "$_\n";
}
closedir(DIR); #used to close the directory handler.

or

opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
	print "$_\n";
}
closedir(DIR);

Aceasta va imprima toate fiศ™ierele disponibile รฎn acel director.

Teste de fiศ™iere Perl ศ™i semnificaศ›ia lor

-r

Pentru a verifica dacฤƒ fiศ™ierul/directorul poate fi citit de utilizatorul/grupul curent

-w

Pentru a verifica dacฤƒ fiศ™ierul/directorul poate fi scris de utilizatorul/grupul curent

-x

Pentru a verifica dacฤƒ Fiศ™ierul/directorul este executabil de cฤƒtre utilizatorul/grupul curent

-o

Pentru a verifica dacฤƒ fiศ™ierul/directorul este deศ›inut de utilizatorul curent

-R

Pentru a verifica dacฤƒ fiศ™ierul/directorul poate fi citit de cฤƒtre acest utilizator/grup real

-W

Pentru a verifica dacฤƒ fiศ™ierul/directorul poate fi scris de cฤƒtre acest utilizator/grup real

-X

Pentru a verifica dacฤƒ fiศ™ierul/directorul este executabil de cฤƒtre acest utilizator/grup real

-O

Pentru a verifica dacฤƒ fiศ™ierul/directorul este deศ›inut de acest utilizator real

-e

Pentru a verifica dacฤƒ numele fiศ™ierului/directorului existฤƒ

-z

Pentru a verifica dacฤƒ fiศ™ierul existฤƒ ศ™i are dimensiunea zero (รฎntotdeauna fals pentru directoare)

-f

Pentru a verifica dacฤƒ Entry este un fiศ™ier simplu

-d

Pentru a verifica dacฤƒ Entry este un director

-l

Pentru a verifica dacฤƒ Entry este o legฤƒturฤƒ simbolicฤƒ

-S

Pentru a verifica dacฤƒ Entry este un socket

-p

Pentru a verifica dacฤƒ Entry este o conductฤƒ numitฤƒ (un โ€žFIFOโ€)

-b

Pentru a verifica dacฤƒ Entry este un fiศ™ier special bloc (cum ar fi un disc montabil)

-c

Pentru a verifica dacฤƒ Entry este un fiศ™ier cu caractere speciale (cum ar fi un dispozitiv I/O)

-u

Pentru a verifica dacฤƒ fiศ™ierul sau directorul este setuid

-g

Pentru a verifica dacฤƒ fiศ™ierul sau directorul este setgid

-k

Pentru a verifica dacฤƒ fiศ™ierul sau directorul are setat bitul lipicios

-t

Handle-ul de fiศ™ier dat este un TTY (ca prin funcศ›ia de sistem isatty(), numele fiศ™ierelor nu pot fi testate prin acest test)

-T

Pentru a verifica dacฤƒ Fiศ™ierul aratฤƒ ca un fiศ™ier โ€žtextโ€.

-B

Pentru a verifica dacฤƒ Fiศ™ierul aratฤƒ ca un fiศ™ier โ€žbinarโ€.

-M

Pentru a verifica vรขrsta de modificare (mฤƒsuratฤƒ รฎn zile) a fiศ™ierului

-A

Pentru a verifica vรขrsta de acces (mฤƒsuratฤƒ รฎn zile) a fiศ™ierului

-C

Pentru a verifica vรขrsta modificฤƒrii Inode (mฤƒsuratฤƒ รฎn zile) a fiศ™ierului

Subrutinฤƒ Perl

Ce este Subroutine?

Subrutine sunt similare cu funcศ›iile din alte limbaje de programare. Am folosit deja cรขteva funcศ›ii รฎncorporate precum print, chomp, chop etc. Ne putem scrie propriile subrutine รฎn Perl. Aceste subrutine pot fi scrise oriunde รฎn program; este de preferat sฤƒ plasaศ›i subprogramele fie la รฎnceputul, fie la sfรขrศ™itul codului.

Subrutinฤƒ รฎn PERL

Exemplu de subrutine

sub subroutine_name 
{
	Statementsโ€ฆ;    # this is how typical subroutines look like.
}

Acum cฤƒ ศ™tim cum sฤƒ scriem o subrutinฤƒ, cum o accesฤƒm?

Trebuie sฤƒ accesฤƒm sau sฤƒ apelฤƒm o subrutinฤƒ folosind numele subrutinei prefixat cu simbolul โ€ž&โ€.

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

Transmiterea parametrilor Perl ศ™i a argumentelor Perl

Subrutinele sau funcศ›ia perl sunt scrise pentru a plasa codul reutilizabil รฎn ele. Majoritatea codului reutilizabil necesitฤƒ ca parametrii sฤƒ fie transferaศ›i subrutinei. Aici, vom afla cum putem transmite argumente subrutinei.

sub display
{		
	my $var=@_; # @_ is a special variable which stores the list of arguments passed.		
	print "$var is the value passed";		
}		
display(2,3,4);    #this is how we need to pass the arguments.

ieศ™ire:

3 este valoarea transmisฤƒ

@_ este o variabilฤƒ matrice specialฤƒ care stocheazฤƒ argumentele transmise subrutinelor.

Perl Shift

De asemenea, putem folosi cuvรขntul cheie โ€žshiftโ€ care schimbฤƒ cรขte un parametru la o variabilฤƒ sau $_[0],$_[1]... care este un element individual al matricei @_

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

ieศ™ire:

salut este trecut

Subrutinele sunt de obicei folosite รฎn programarea orientatฤƒ pe obiecte ศ™i, de asemenea, รฎn locuri รฎn care este posibil sฤƒ aveศ›i mai mult cod reutilizabil de plasat.

Funcศ›ionalitatea principalฤƒ a subrutinelor este de a face o anumitฤƒ sarcinฤƒ ศ™i de a returna rezultatul codului reutilizabil.

Tutorial PERL pentru รฎncepฤƒtori - Ghid complet

Putem returna o valoare din subrutine folosind cuvรขntul cheie return.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

ieศ™ire:

11

$rezultatul va pฤƒstra valoarea adฤƒugatฤƒ a $a ศ™i $b.

De asemenea, putem trece hashuri ศ™i matrice direct subrutinei.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

ieศ™ire:

1a2b

De asemenea, putem returna un hash sau o matrice.

sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;

ieศ™ire:

รŽn interiorul subrutinei2b1aDupฤƒ apelul subrutinei2b1a

Formatul Perl

Perl are un mecanism prin care putem genera rapoarte. Folosind aceastฤƒ funcศ›ie, putem face rapoarte exact aศ™a cum ne dorim รฎn timp ce imprimฤƒm pe ecranul de ieศ™ire sau รฎntr-un fiศ™ier. Un format simplu poate fi scris folosind funcศ›iile printf sau sprintf disponibile รฎn Perl.

printf "%05d\n", 30;

Aceasta va include zerouri รฎnaintea numฤƒrului 30, care face un numฤƒr total de cifre pรขnฤƒ la 5. Acelaศ™i lucru poate fi folosit pentru sprintf.

sprintf "%05d\n", 30; # This will print the same as printf.

Folosind printf ศ™i sprintf, putem obศ›ine majoritatea formatelor Perl. รŽn cazul rapoartelor, va fi dificil de implementat.

Formatul Perl

Exemplu de raport:

================================================== =========================
Nume Adresฤƒ Vรขrsta Telefon
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

Cele de mai sus sunt un exemplu de rapoarte pe care trebuie sฤƒ le imprimฤƒm รฎn acelaศ™i mod รฎn Perl. Acest lucru poate fi realizat folosind perl printf ศ™i perl sprintf. Poate fi implementat eficient folosind formatul.

Un format poate fi declarat รฎn modul de mai jos.

format FORMATNAME=FORMATLIST.

Aici, vom folosi o anumitฤƒ metodฤƒ de scriere pentru a tipฤƒri datele pe ecranul de ieศ™ire sau รฎn fiศ™ier.

Simbol Descriere

@

Folosit pentru a reprezenta รฎnceputul deศ›inฤƒtorului cรขmpului

>

Alinierea la dreapta a textului

<

Alinierea la stรขnga a textului

|

Alinierea la centru

#

Numeric dacฤƒ sunt furnizate multiple #. Se presupune ca un comentariu dacฤƒ este furnizat un singur #

.

Punct zecimal

^

Suportul de รฎnceput al cรขmpului poate fi folosit ศ™i pentru mai multe linii ศ™i, de asemenea, pentru รฎnfฤƒศ™urarea cuvintelor

~

Linia ar trebui sฤƒ fie goalฤƒ dacฤƒ variabila este goalฤƒ

@*

Mai multe linii.

($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); 
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write; 
format STDOUT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format STDOUT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone 
.

Executaศ›i codul pentru a vedea rezultatul.

Folosim simbolul @ pentru a specifica รฎnceputul deศ›inฤƒtorului cรขmpului sau al ศ™irului, โ€ž<โ€ fiecare caracter.

Folosim STDOUT pentru a imprima pe ieศ™irea standard. Putem schimba acest lucru รฎn handler de fiศ™iere pe care รฎl folosim pentru a scrie date รฎn fiศ™ier.

open(REPORT,">test.txt"); 
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); 
write REPORT; 
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write REPORT; 
format REPORT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format REPORT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone

Putem รฎnlocui โ€ž<โ€ cu โ€ž>โ€ sau โ€ž|โ€ pentru a schimba alinierea textului. STDOUT_TOP este folosit pentru a proiecta antetul formatului. Putem folosi acelaศ™i lucru cu gestionarea fiศ™ierelor folosind FH_TOP (FH este gestionarea fiศ™ierului). Acest lucru va scoate formatul รฎn fiศ™ierul pe care รฎl lucrฤƒm pe.

Standarde de codare Perl

Fiecare programator va avea propriul simศ› al scrierii codului folosind anumite standarde; aceste standarde ar trebui sฤƒ fie suficient de familiare pentru ca alศ›i programatori sฤƒ poatฤƒ รฎnศ›elege ศ™i sprijini codul รฎn mod corespunzฤƒtor.

Standarde de codare รฎn Perl

Standarde de codare รฎn Perl

Scrierea codului este simplฤƒ ศ™i uศ™oarฤƒ. Problema apare atunci cรขnd trebuie รฎntreศ›inutฤƒ รฎn etapele ulterioare. รŽn timpul scrierii codului, trebuie respectate liniile directoare adecvate ศ™i standardele de codare. De asemenea, Perl defineศ™te anumite standarde care vor fi utile programatorilor pentru a scrie cod. Este recomandabil sฤƒ รฎncฤƒrcaศ›i โ€žmodulul strictโ€ ศ™i โ€žmodulul de avertizareโ€ รฎn timp ce scrieศ›i codul. Fiecare dintre aceste module are propria sa importanศ›ฤƒ. Strict ne va face sฤƒ declarฤƒm variabila รฎnainte de a folosi ศ™i, de asemenea, va spune dacฤƒ existฤƒ vreun cuvรขnt gol รฎn codul dvs. Modulul de avertismente poate fi folosit alternativ prin trecerea opศ›iunii โ€ž-wโ€ interpretului Perl รฎn shebang. Avertismentele vor fi tipฤƒrite pe ecranul de ieศ™ire.

#!/usr/bin/perl โ€“w

Mai jos sunt cรขteva liste de standarde.

  • Utilizaศ›i modulul โ€žstrictโ€ ศ™i โ€žavertismenteโ€.
  • Eliminaศ›i variabila, care nu este utilizatฤƒ.
  • Numele variabilelor ar trebui sฤƒ fie รฎnศ›elese de alศ›i utilizatori. Ex: $nume, @fileData etc.
  • Documentaศ›ia este necesarฤƒ รฎn timpul codificฤƒrii unui script.
  • Nu codificaศ›i nicio valoare, mai degrabฤƒ รฎncercaศ›i sฤƒ le preluaศ›i dinamic sau cereศ›i utilizatorului sฤƒ le introducฤƒ รฎn timpul rulฤƒrii (calea fiศ™ierului, numele fiศ™ierelor).
  • Maximizaศ›i reutilizarea codului. รŽncercaศ›i sฤƒ puneศ›i codul reutilizabil รฎn subrutine.
  • Adicฤƒ, numele complete ar trebui date pentru subrutine.
  • Subrutinele trebuie scrise cu comentarii ศ™i documentaศ›ie corespunzฤƒtoare.
  • Iniศ›ializaศ›i รฎntotdeauna variabilele.
  • Verificaศ›i รฎntotdeauna codurile de returnare pentru apelurile de sistem. Deschiderea unui fiศ™ier se poate รฎntรขmpla sau nu, avรขnd un cod de returnare aici va afiศ™a starea de eroare dacฤƒ fiศ™ierul nu existฤƒ.

    Ex: deschis(FH,

  • Subrutina ar trebui sฤƒ returneze รฎntotdeauna o valoare.
  • Deschide creศ› รฎn aceeaศ™i linie.
  • O singurฤƒ linie BLOCK poate fi plasatฤƒ รฎntr-o singurฤƒ linie cu ondulat.
  • Utilizaศ›i etichete รฎn timpul LOOP-urilor, ar fi uศ™or sฤƒ ieศ™iศ›i din buclฤƒ ori de cรขte ori este necesar.
  • Folosiศ›i sublinierea รฎn timp ce frazele lungi de cuvinte sunt scrise ca nume de variabilฤƒ sau subrutinฤƒ.
  • รŽncercaศ›i sฤƒ utilizaศ›i expresii regex simple รฎn timpul codificฤƒrii.

Exemplu perfect cu standarde de codare:

#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl 
use strict;
use warnings; 
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>) 
{   
	print $line;
} # Looping file handler to print data

Gestionarea erorilor Perl

Ce este o excepศ›ie?

O excepศ›ie este un eveniment care are loc รฎn timpul execuศ›iei programului ศ™i care va suspenda sau รฎnchide programul dumneavoastrฤƒ.

Gestionarea erorilor

Gestionarea erorilor este una de care fiecare programator trebuie sฤƒ aibฤƒ grijฤƒ รฎn timpul programฤƒrii. Perl oferฤƒ, de asemenea, tehnici de tratare a erorilor cu ajutorul cฤƒrora le putem capta erorile ศ™i le putem gestiona รฎn consecinศ›ฤƒ.

Tratarea erorilor รฎn Perl

Tratarea erorilor รฎn Perl

Existฤƒ multe modalitฤƒศ›i de a verifica dacฤƒ existฤƒ erori รฎn program. Trebuie sฤƒ examinฤƒm codurile de returnare ale funcศ›iei pe care o folosim. Dacฤƒ reuศ™im sฤƒ gestionฤƒm corect acele coduri de returnare, atunci cea mai mare parte a gestionฤƒrii erorilor poate fi realizatฤƒ.

Ce se va รฎntoarce รฎn cazul apelurilor de sistem?

รŽn cazul apelurilor de sistem, starea de returnare va fi stocatฤƒ รฎn douฤƒ variabile speciale $? ศ˜i $!

$! โ€“ Acest lucru va prinde numฤƒrul de eroare sau numฤƒrul de eroare asociat cu mesajul de eroare.

$? โ€“ Aceasta va menศ›ine funcศ›ia return status system().

Folosind operatorul Perl sau logic

Putem folosi logic sau operator pentru gestionarea erorilor รฎn timpul utilizฤƒrii apelurilor de sistem.

ex:

open(FH,"<test.txt");

Acest lucru va deschide fiศ™ierul รฎn modul de citire dacฤƒ fiศ™ierul existฤƒ.

Ce se รฎntรขmplฤƒ dacฤƒ fiศ™ierul lipseศ™te?

open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. 
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR

Perl Eval

Funcศ›ia Eval poate gestiona erorile fatale, erorile de timp de compilare, erorile de rulare ศ™i acele erori care terminฤƒ codul la un moment dat.

Funcศ›ia Perl Eval poate avea un bloc de cod sau o expresie. Evals considerฤƒ tot ce este plasat รฎn el ca pe un ศ™ir.

Luaศ›i รฎn considerare o situaศ›ie de apelare a unei subrutine care nu este definitฤƒ รฎn script. รŽn aceastฤƒ situaศ›ie, scriptul se terminฤƒ afirmรขnd โ€žsubrutinฤƒ nedefinitฤƒ &XYZ, aceastฤƒ eroare poate fi gestionatฤƒ รฎn funcศ›ia eval.

Existฤƒ multe utilizฤƒri ale blocului evals; o astfel de utilizare este atunci cรขnd dorim sฤƒ รฎncฤƒrcฤƒm modulul care este specific sistemului de operare รฎn timpul rulฤƒrii.

Ex: รŽmpฤƒrศ›irea la zero provoacฤƒ o eroare fatalฤƒ; pentru a gestiona acest lucru putem plasa codul รฎn blocul evals.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

ieศ™ire:

eroare de sintaxฤƒ la C:\Users\XYZ\Text.pl linia 8, lรขngฤƒ โ€ž)

{โ€œ

Execuศ›ia C:\Users\XYZ\Text.pl a fost รฎntreruptฤƒ din cauza erorilor de compilare.

Exemplu: eval folosind instrucศ›iunea perl die.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

ieศ™ire:

Prins: mor la subtest

Folosind Perl Try

Perl nu acceptฤƒ blocuri try, catch ศ™i รฎn final cod ca alte limbaje de programare. Le putem folosi รฎn continuare รฎncฤƒrcรขnd un modul extern Perl.

foloseศ™te Try::Tiny;

Folosind acest lucru, vฤƒ putem plasa codul รฎn blocul de รฎncercare ศ™i putem detecta eroarea din blocul de avertizare.

รŽn loc de $@ folosit รฎn eval Try::Tiny foloseศ™te $_.

# gestioneazฤƒ erorile cu un catch handler

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

Folosind in sfarsit.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

ieศ™ire:

foo la C:\Users\XYZ\Text.pl linia 4.

Putem folosi try, catch ศ™i รฎn sfรขrศ™it รฎn acest fel.

รฎncercaศ›i { # declaraศ›ie }

catch {# declaraศ›ie }

รฎn cele din urmฤƒ { # statement };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

ieศ™ire:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

ieศ™ire:

Programare Perl Socket

Ce este o prizฤƒ?

Tutorial PERL pentru รฎncepฤƒtori - Ghid complet

Priza este un mediu prin care douฤƒ computere pot interacศ›iona รฎntr-o reศ›ea folosind adresa ศ™i porturile de reศ›ea.

Sฤƒ presupunem cฤƒ A (Server) ศ™i B (Client) sunt douฤƒ sisteme, care trebuie sฤƒ interacศ›ioneze unul cu celฤƒlalt folosind Socket-uri pentru rularea unor programe.

Pentru a implementa acest lucru, trebuie sฤƒ creฤƒm socket-uri atรขt รฎn โ€‹โ€‹A (Server) cรขt ศ™i รฎn B (Client), A va fi รฎn starea de recepศ›ie ศ™i B va fi รฎn starea de expediere.

A (Server):

Aici, serverul doreศ™te sฤƒ primeascฤƒ o conexiune de la B (Client) ศ™i sฤƒ execute unele sarcini ศ™i sฤƒ trimitฤƒ rezultatul รฎnapoi cฤƒtre B (Client). Cรขnd executฤƒm codul, sistemul de operare din A รฎncearcฤƒ sฤƒ creeze un socket ศ™i leagฤƒ un port la acel socket. Apoi va asculta de la expeditor care este B.

B (Client).

Aici, clientul doreศ™te sฤƒ trimitฤƒ un program din sistemul sฤƒu cฤƒtre A (Server) pentru procesare. Cรขnd executฤƒm codul, sistemul de operare din B รฎncearcฤƒ sฤƒ creeze un socket pentru comunicarea cu A (Server), B trebuie sฤƒ specifice adresa IP ศ™i numฤƒrul portului A la care B doreศ™te sฤƒ se conecteze.

Dacฤƒ acest lucru merge bine, ambele sisteme vor interacศ›iona pentru a schimba informaศ›ii printr-un singur port. Perl acceptฤƒ ศ™i programarea socketului.

Perl are un API nativ prin care pot fi implementate socket-uri. Pentru a fi uศ™or, existฤƒ multe module CPAN prin care scriem programe socket.

Operaศ›iuni cu serverul:

  • Creaศ›i socket
  • Legaศ›i priza cu adresa ศ™i portul
  • Ascultฤƒ socket-ul de pe adresa respectivฤƒ a portului
  • Acceptaศ›i conexiunile client care รฎncearcฤƒ sฤƒ se conecteze folosind portul ศ™i IP-ul serverului
  • Efectuaศ›i operaศ›iuni

Client Operaacศ›iuni:

  • Creaศ›i socket
  • Conectaศ›i-vฤƒ la server folosind adresa portului sฤƒu
  • Efectuaศ›i operaศ›iuni

Client server Operaศ›iuni รฎn Perl

socket.io

Acesta este un modul pentru programarea socketului, care se bazeazฤƒ pe programarea orientatฤƒ pe obiecte. Acest modul nu acceptฤƒ tipul de reศ›ea INET utilizat รฎn reศ›ele.

IO::Socket::INET:

Acest modul acceptฤƒ domeniul INET ศ™i este construit pe IO::Sockets. Toate metodele disponibile รฎn IO::Sockets sunt moศ™tenite รฎn modulul INET.

Client ศ™i server folosind protocolul TCP:

TCP este un protocol orientat spre conexiune; vom folosi acest protocol pentru programarea socketului.

รŽnainte de a continua, sฤƒ vedem cum putem crea un obiect pentru modulul IO::Socket::INET ศ™i sฤƒ creฤƒm un socket.

$socket = IO::Socket::INET->new(PeerPort => 45787, 
PeerAddr => inet_ntoa(INADDR_BROADCAST), 
Proto => udp,LocalAddr => 
'localhost',Broadcast => 1 )
or 
die "Can't create socket and bind it : $@n";

Noua metodฤƒ din modulul IO::Socket::INET acceptฤƒ un hash ca parametru de intrare รฎn subrutinฤƒ. Acest hash este predefinit ศ™i trebuie doar sฤƒ furnizฤƒm valorile cheilor pe care dorim sฤƒ le folosim. Existฤƒ o listฤƒ de chei utilizate de acest hash.

PeerAddr

Adresฤƒ gazdฤƒ de la distanศ›ฤƒ

PeerHost

Sinonim pentru PeerAddr

PeerPort

Port la distanศ›ฤƒ sau serviciu

LocalAddr

Adresฤƒ de legare a gazdei locale

Gazdฤƒ localฤƒ

Sinonim pentru LocalAddr

Local Port

Port de legare a gazdei locale

Proto

Numele protocolului (sau numฤƒrul)

Tip

Tipul soclului

Asculta

Dimensiunea cozii pentru ascultare

ReutilizareAddr

Setaศ›i SO_REUSEADDR รฎnainte de legare

Reutilizare

Setaศ›i SO_REUSEADDR รฎnainte de legare

Reutilizaศ›iPort

Setaศ›i SO_REUSEPORT รฎnainte de legare

Difuza

Setaศ›i SO_BROADCAST รฎnainte de legare

Pauzฤƒ

Valoarea timeout pentru diferite operaศ›iuni

MultiHomed

รŽncercaศ›i toate adresele pentru gazde multihomed

Blocarea

Stabiliศ›i dacฤƒ conexiunea va fi modul de blocare

Server.pl

use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '45655', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print "Waiting for the client to send datan"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print $_; 
} 
close($socket);

Client.pl

use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '45655', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket; 
print $socket "Hello this is socket connection!n"; 
close($socket);

Notฤƒ:

รŽn programarea socketului, va trebui sฤƒ executฤƒm mai รฎntรขi Server.pl ศ™i apoi client.pl individual รฎn diferite prompturi de comandฤƒ dacฤƒ rulฤƒm pe gazda localฤƒ.

Ce este modulele ศ™i pachetele Perl

Modulele ศ™i pachetele sunt strรขns legate รฎntre ele ศ™i sunt independente. Pachetul: Un pachet Perl este cunoscut ศ™i sub numele de spaศ›iu de nume ศ™i are toate variabilele unice utilizate, cum ar fi hash-uri, matrice, scalari ศ™i subrutine. Modul: Modulul este o colecศ›ie de cod reutilizabil, รฎn care scriem subrutine รฎn el. Aceste module pot fi รฎncฤƒrcate รฎn programe Perl pentru a utiliza subrutinele scrise รฎn acele module.

Ce sunt modulele Perl?

Modulele standard vor fi instalate รฎn timpul instalฤƒrii Perl pe orice sistem. CPAN: Perl cuprinzฤƒtor Archive Network โ€“ Un depozit global de module Perl. Modulele noastre Perl personalizate, care pot fi scrise de noi. Practic, un modul atunci cรขnd este รฎncฤƒrcat รฎn orice script va exporta toate variabilele ศ™i subrutinele sale globale. Aceste subrutine pot apela direct ca ศ™i cum ar fi fost declarate รฎn scriptul รฎnsuศ™i. Modulele Perl pot fi scrise cu extensia .pm la numele de fiศ™ier Ex: Foo.pm. Un modul poate fi scris folosind โ€žpachetul Fooโ€ la รฎnceputul programului.

Modulul de bazฤƒ Perl:

#!/usr/bin/perl 
package Arithmetic; 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b);
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Fฤƒrฤƒ ieศ™ire

Pentru a folosi acest modul Perl, trebuie sฤƒ-l plasฤƒm รฎn directorul de lucru curent.

Putem รฎncฤƒrca un modul Perl folosind require sau use oriunde รฎn cod. Diferenศ›a majorฤƒ รฎntre necesitฤƒ ศ™i utilizare este, necesitฤƒ modul รฎncฤƒrcat รฎn timpul rulฤƒrii ศ™i รฎncฤƒrcฤƒrile de utilizare รฎn timpul compilฤƒrii.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

Aici, รฎn exemplul de mai sus, accesฤƒm subrutinele folosind numele complet calificat al modulului.

De asemenea, putem accesa pachetul folosind โ€žutilizaศ›i aritmeticaโ€.

Exportator:

Acest modul are o funcศ›ionalitate implicitฤƒ a metodelor de import.

#!/usr/bin/perl 
package Arithmetic; 
require Exporter; 
@ISA= qw(Exporter); # This is basically for implementing inheritance. 
@EXPORT = qw(add); 
@EXPORT_OK = qw(subtract); 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b);
 } 
1;

Matricea @EXPORT poate fi folositฤƒ pentru a transmite o listฤƒ de variabile ศ™i subrutine care, implicit, vor fi exportate apelantului Modulului.

Matricea @EXPORT_OK poate fi folositฤƒ pentru a transmite o listฤƒ de variabile ศ™i subrutine care vor fi exportate la cerere, unde utilizatorul trebuie sฤƒ specifice รฎn timpul รฎncฤƒrcฤƒrii modulului.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

รŽn mod implicit, adฤƒugarea subrutinei va fi exportatฤƒ. Metoda de scฤƒdere nu va fi exportatฤƒ dacฤƒ nu este specificatฤƒ รฎn timpul รฎncฤƒrcฤƒrii modulului.

Programare orientatฤƒ pe obiecte รฎn Perl

รŽn aceastฤƒ secศ›iune, vom รฎnvฤƒศ›a cum sฤƒ creฤƒm module Perl orientate pe obiecte. Mai รฎntรขi, sฤƒ vedem care este obiectul? Un obiect este o instanศ›ฤƒ prin care putem accesa, modifica ศ™i localiza anumite date din orice modul Perl. Acest lucru nu este altceva decรขt sฤƒ faceศ›i pachetul, variabilele ศ™i subrutinele existente Perl sฤƒ acศ›ioneze ca o clasฤƒ, obiecte ศ™i metode รฎn raport cu alte limbaje de programare.

Creaศ›i o clasฤƒ

ศ˜tim deja cum sฤƒ creฤƒm module din subiectul anterior. Scopul clasei este de a stoca metode ศ™i variabile. Un Modul Perl va avea subrutine care sunt metode. Trebuie sฤƒ accesฤƒm acele variabile ศ™i obiecte subrutine.

Constructor Perl

Un constructor รฎn Perl este o metodฤƒ care va executa ศ™i ne va returna o referinศ›ฤƒ cu numele modulului etichetat la referinศ›ฤƒ. Aceasta se numeศ™te binecuvรขntare a clasei. Folosim o anumitฤƒ variabilฤƒ pentru binecuvรขntarea unei clase perl, care este bless.

#!/usr/bin/perl 
package Arithmetic; 
sub new 
{ 
my $class=shift;
my $self={}; 
bless $self, $class; 
return $self; 
} 
sub add 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
}
sub subtract 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Noua metodฤƒ folositฤƒ ca constructor pentru o clasฤƒ, Acest constructor va crea un obiect pentru noi ศ™i va reveni la scriptul care apeleazฤƒ acest constructor.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

Aici, trebuie sฤƒ รฎnศ›elegem cum a fost creat obiectul. Ori de cรขte ori รฎncercฤƒm sฤƒ creฤƒm un obiect pentru clasฤƒ, trebuie sฤƒ folosim numele complet al clasei. Sฤƒ presupunem cฤƒ, dacฤƒ clasa perl este localizatฤƒ รฎn vreun lib\Math\Arithmetic.pm. ศ˜i, dacฤƒ vrem sฤƒ accesฤƒm aceastฤƒ clasฤƒ perl din directorul lib, atunci trebuie sฤƒ furnizฤƒm รฎntreaga cale cฤƒtre clasฤƒ รฎn timp ce apelฤƒm scriptul.

utilizaศ›i lib::Math::Aritmeticฤƒ;

my $obj = lib::Math::Arithmetic->new();

Aศ™a se รฎntรขmplฤƒ crearea obiectului รฎn Perl.

@INC:

Cum ศ™tie scriptul Perl unde existฤƒ modulul de bibliotecฤƒ? Perl ศ™tie doar despre directorul curent al scriptului ศ™i calea bibliotecii รฎncorporate รฎn Perl. Ori de cรขte ori folosim modulul Perl, care nu se aflฤƒ รฎn directorul curent sau Calea bibliotecii Perl, scriptul va eศ™ua รฎntotdeauna. Despre @INC, acesta este un tablou, care deศ›ine toate cฤƒile directoarelor unde trebuie sฤƒ caute modulele Perl. รŽncercaศ›i sฤƒ executaศ›i aceastฤƒ comandฤƒ ศ™i vedeศ›i care va fi rezultatul.

perl โ€“e "print @INC"

Acest lucru va oferi o ieศ™ire ศ™i aceasta este calea รฎn care vor fi disponibile modulele lib. Ori de cรขte ori folosim un nou modul de bibliotecฤƒ, trebuie sฤƒ รฎi spunem lui Perl, interpretului, sฤƒ caute acea locaศ›ie specialฤƒ รฎn care este disponibil modulul Perl.

push(@INC, "PATH TO YOUR MODULE");

Faceศ›i din aceasta prima linie de cod. Aceasta รฎi va spune interpretului tฤƒu sฤƒ caute รฎn acea Cale. sau utilizare

lib Arithmetic; # List here is your Perl Module location

Perl Destructor

Destructorul unui obiect este apelat implicit la sfรขrศ™itul ศ™i รฎnainte de ieศ™irea scriptului. Acesta este folosit pentru a vฤƒ distruge obiectele din memorie.


PERL V/s Shell Scripting

Introducere รฎn programarea PERL

  • Programarea รฎn Perl nu provoacฤƒ probleme de portabilitate, ceea ce este obiศ™nuit atunci cรขnd se utilizeazฤƒ diferite shell-uri รฎn scripturile shell.
  • Gestionarea erorilor este foarte uศ™oarฤƒ รฎn Perl
  • Puteศ›i scrie cu uศ™urinศ›ฤƒ programe lungi ศ™i complexe pe Perl datoritฤƒ vastitฤƒศ›ii sale. Acest lucru este รฎn contrast cu Shell care nu acceptฤƒ spaศ›ii de nume, module, obiect, moศ™tenire etc.
  • Shell are mai puศ›ine biblioteci reutilizabile disponibile. Nimic รฎn comparaศ›ie cu CPAN-ul lui Perl
  • Shell este mai puศ›in sigur. Apeleazฤƒ funcศ›ii externe (comenzi precum mv, cp etc depind de shell-ul utilizat). Dimpotrivฤƒ, Perl face lucrฤƒri utile รฎn timp ce foloseศ™te funcศ›ii interne.

Cum este utilizat PERL รฎn testarea automatizฤƒrii

Perl este utilizat pe scarฤƒ largฤƒ รฎn automatizare. Poate cฤƒ nu este cel mai bun limbaj de programare din lume, dar este cel mai potrivit pentru anumite tipuri de sarcini. Sฤƒ discutฤƒm unde ศ™i de ce este folosit Perl Testarea automatizฤƒrii.

Testarea stocฤƒrii

Testarea stocฤƒrii folosind Perl

Ce este stocarea? Date stocate รฎn Fiศ™iere.

Sฤƒ presupunem cฤƒ avem un depozit legat Caz de testare unde trebuie sฤƒ scriem date pe o partiศ›ie, sฤƒ o citim ศ™i sฤƒ verificฤƒm dacฤƒ datele sunt scrise corect.

Acest lucru se poate face manual, dar poate un tester manual sฤƒ facฤƒ acelaศ™i lucru de 10000 de ori? Va fi un coศ™mar! Avem nevoie de automatizare

Cel mai bun instrument de automatizare a oricฤƒrui lucru legat de stocare este Perl datoritฤƒ tehnicilor sale de manipulare a fiศ™ierelor, REGEX ศ™i analiza puternicฤƒ a fiศ™ierelor, care consumฤƒ cel mai puศ›in timp de execuศ›ie รฎn comparaศ›ie cu alte limbaje de programare.

De ce trebuie sฤƒ testฤƒm stocarea? Gรขndiศ›i-vฤƒ la centrele de date mari รฎn care datele vor curge continuu de la un sistem la altul, cu 1000 de รฎnregistrฤƒri stocate pe secundฤƒ. Testarea robusteศ›ei unui astfel de mecanism de stocare este esenศ›ialฤƒ.

Multe companii precum HP, Dell, IBM ศ™i multe producศ›ii de servere folosesc Perl ca interfaศ›ฤƒ pentru a testa funcศ›ionalitatea รฎn domeniile de stocare ศ™i reศ›ea. NetApp este una dintre aceste companii care lucreazฤƒ complet pe stocare ศ™i foloseศ™te Perl ca limbaj de programare pentru a automatiza cazurile de testare.

Dacฤƒ sunteศ›i interesat de Perl Automation, atunci ar fi recomandabil sฤƒ aflaศ›i despre Storage & Networking Concepts.

Testare server ศ™i reศ›ea:

Testarea serverului ศ™i a reศ›elei folosind Perl

Testarea serverului ศ™i a reศ›elei folosind Perl

PERL este utilizat pe scarฤƒ largฤƒ รฎn monitorizarea timpului de funcศ›ionare ศ™i a performanศ›ei serverului.

Luaศ›i รฎn considerare un centru de date care are 100 de gazde (servere). Vi se cere sฤƒ vฤƒ conectaศ›i la fiecare gazdฤƒ, sฤƒ executaศ›i unele comenzi de la distanศ›ฤƒ. De asemenea, doriศ›i sฤƒ reporniศ›i sistemul ศ™i sฤƒ verificaศ›i cรขnd revine online.

Efectuarea manualฤƒ a acestei sarcini pentru toate cele 100 de gazde va fi un coศ™mar. Dar putem automatiza cu uศ™urinศ›ฤƒ acest lucru folosind PERL

Proiectaศ›i paศ™i pentru a realiza aceastฤƒ automatizare de mai sus folosind PERL

  1. Preluaศ›i informaศ›ii din fiศ™ierul despre informaศ›iile gazdei, cum ar fi (IP, Nume de utilizator ศ™i Parolฤƒ).
  2. Utilizaศ›i Net::SSH2 pentru a vฤƒ conecta la fiecare sistem ศ™i a stabili un canal pentru a executa comenzile.
  3. Executaศ›i setul de comenzi necesare, de exemplu: ls, dir, ifconfig,ps etc.
  4. Reporniศ›i sistemul.
  5. Aศ™teptaศ›i 10 minute pentru ca sistemul sฤƒ porneascฤƒ.
  6. Faceศ›i ping sistemului utilizรขnd modulul Net::Ping ศ™i imprimaศ›i starea.

Vom codifica scenariul de mai sus.

Sฤƒ luฤƒm un fiศ™ier numit Input.txt care va stoca informaศ›iile complete despre toate gazdele รฎn care trebuie sฤƒ ne conectฤƒm ศ™i sฤƒ executฤƒm comanda.

Intrare.txt

192.168.1.2 parola root

192.168.1.3 parola root

192.168.1.4 rฤƒdฤƒcinฤƒ rฤƒdฤƒcinฤƒ123

HostCheck.pl

use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new();    # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new();  #Creating object for Net::SSH2
open( FH, "Input.txt" );        # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
    if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ )    #Regex to get each info from file
    {
        $ip = $1;
        my $user = $2;
        my $password = $3;
        $SSHObj->connect($ip);
        print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
        my $status = $SSHObj->auth_password( $user, $password );
        print "$status\n";
        die("unable to establish connection to -- $ip") unless ($status);
        my $shell = $SSHObj->channel();
        print "$_\n" while <$shell>;
        $shell->blocking(1);
        $shell->pty('tty');
        $shell->shell();
        sleep(5);
        #Executing the list of command on particular host. Can be any command
        print $shell "ls \n";
        print "$_\n" while <$shell>;
        print $shell "ps \n";
        print "$_\n" while <$shell>;
        print $shell "dir \n";
        print "$_\n" while <$shell>;
        print $shell "init 6\n";    #rebooting the system
        push( @ips, $ip );
    }
}
sleep 600;
foreach (@ips)
{
    if ( $ping->ping($_) )
    {
        print "$_ is alive.\n" if $ping->ping($_);
    }
    else
    {
        print "$_ is not still up --waiting for it to come up\n";
    }
}

Testare Web

Perl nu este limitat doar la testarea stocฤƒrii ศ™i reศ›elei. De asemenea, putem efectua teste bazate pe Web folosind PERL. WWW-Mecanizare este un modul folosit pentru testarea web. Practic, nu va lansa niciun browser pentru a testa funcศ›ionalitatea aplicaศ›iei web, ci foloseศ™te codul sursฤƒ al paginilor html.

De asemenea, putem efectua teste bazate pe browser folosind Selenium IDE, RC, driver web. Perl este suportat pentru Selenium.

\nโ€; #aceasta va pฤƒstra ศ™irul rฤƒmas dupฤƒ ce se terminฤƒ potrivirea patterului.
imprimare "

Rezumaศ›i aceastฤƒ postare cu: