Perl | ||
![]() | ||
Data primei versiuni | 1987 | |
---|---|---|
Paradigme | Obiect , imperativ , funcțional , reflexiv , procedural , bazat pe evenimente , generic | |
Autor | Larry Wall | |
Dezvoltatori | Fundația Perl | |
Ultima versiune | 5.34.0 (20 mai 2021) | |
Tastare | Slab , dinamic | |
Influențată de | C , BASIC , Eiffel , shell , sed , awk | |
Influențat | Ruby , Python , PHP , Raku | |
Implementări | Perl | |
Scris in | VS | |
Sistem de operare | Multi-platformă | |
Licențe |
Licențe gratuite : - GNU GPL ; - Licență artistică ; |
|
Site-ul web | www.perl.org și dev.perl.org/perl5 | |
Extensie de fișier | pl și pm | |
Perl este un limbaj de programare creat de Larry Wall în 1987 pentru a procesa cu ușurință informațiile textuale . Acest limbaj, interpretat , este inspirat din structurile de control și tipărire ale limbajului C , dar și din limbajele de script sed , awk și shell ( sh ).
Suportă expresii regulate în propria sintaxă, permițând astfel direct acțiuni asupra aspectului general al secvențelor de text.
O asociație, Fundația Perl , are grijă de viitorul său și, printre altele, posibila sa tranziție de la versiunea 5.x la versiunea 7 - versiunea 6 inițial considerată ca succesorul Perl 5, divergând până la punctul de a deveni un un limbaj cu drepturi depline numit Raku . Starea limbii este cea a software-ului gratuit , distribuit sub o licență dublă : Artistic License și GPL .
Perl oferă comoditatea de a extrage informații din fișiere text și de a le raporta. Poate înlocui scripturile shell , precum și comenzi precum sed , awk , grep , cut , test și expr . Tratând formate de intrare care nu sunt neapărat structurate, evită trecerea datelor de la un proces la altul și astfel face procesele mai puțin lizibile, pentru care oferă un cadru unificat. Sintaxa sa este inspirată de C, adaugă posibilitatea expresiilor regulate direct în limbă și include principalele funcții ale bibliotecilor de sistem din C.
De asemenea, urmărește confortul pragmatic pentru programator (existența comenzilor rapide care îl califică drept limbaj „diagonal”) mai degrabă decât dorința estetică pentru o arhitectură strictă (limbaje „ortogonale”).
Perl multiplataforma este folosit, printre altele, pentru scrierea de scripturi CGI și procesarea fișierelor jurnal. De asemenea, permite adăugarea „ în proces ” într-un server web Apache, datorită extensiei mod_perl , cum ar fi servletele PHP sau Java .
Este ușor de găsit sau compilat pe majoritatea sistemelor de operare , în special în mediul POSIX : GNU / Linux , * BSD , Mac OS X și Cygwin sub Microsoft Windows cu ActivePerl - din care versiunea 5.8 permite utilizarea Unicode sau GUI.
Din moment ce disponibilitatea WSL pe Windows 10, poate fi utilizată și într-o fereastră bash pe Windows.
Din 2008 Strawberry există pentru Windows, aproape de distribuția originală Unix, cu un compilator C și disponibil în versiunea de 32 și 64 de biți, precum și în versiunea portabilă (fără instalare).
Perl este un limbaj imperativ apropiat de shell-urile C și UNIX. Ca și în shell, caracterul încrucișat (#) introduce un comentariu și linia nouă îl încheie. De asemenea, este posibil să utilizați POD pentru a scrie un comentariu pe mai multe linii.
# Je suis un commentaire classique my $variable = 1; # Je suis un commentaire après une ligne de code =for comment Je suis un commentaire sur plusieurs lignes. =cutSintaxa Perl îi permite să -și exprime în mod concis aceleași expresii lingvistice fără apeluri funcții de biblioteci , deci mai lizibil. Începătorul poate folosi cu ușurință doar un subset al limbii.
VariabilePerl este static tastat într - un mod simplu: primul caracter al unei variabile identificator este un non - alfanumeric caracter numit Sigil :
Spre deosebire de Perl 6 , sigilul $ este utilizat atunci când se apelează un element dintr-o matrice sau un element hash. Acest lucru provine din faptul că, în general, numim element scalar. Exemplu:
$a[2]; # Appel d'un élément de tableau/liste $a{John}; # Appel d'un élément de table de hashCele trei tipuri de variabile cu același nume pot coexista:
$a = 'rien'; # scalaire contenant la chaine 'rien' @a = 1..5; # tableau contenant les chiffres '1, 2, 3, 4, 5' %a = ( # table de hash contenant 3 paires de clef => valeur John => 'Sheridan', Londo => 'Mollari', Kosh => 'Naranek' );Perl acceptă declaratorii care indică domeniul de aplicare al variabilelor declarate:
my $toto = 'rien' ; # variable scalaire à portée lexicale local $level += 1; # variable scalaire avec une valeur à portée dynamique our @s = (1, $s, 3.14); # variable tableau globale au module courantSigilele sunt folosite pentru a recunoaște numele variabilelor din șirurile de caractere și pentru a interpreta aceste variabile.
print "la variable toto vaut $toto";Perl nu necesită producători de caroserii .
my %a = ( clé1 => [1, 2], clé2 => [3, 4] );Modulul XML :: Literal disponibil pe CPAN permite acceptarea literelor de tip XML într-un mod similar cu extensia E4X standard a ECMAScript .
Începând cu versiunea 5.10, limba a inclus caracteristici destinate inițial pentru ceea ce urma să fie viitorul Perl 6, cum ar fi o structură de control a comutatorului și capturi numite pentru operatorul de potrivire (adică capacitatea de a denumi elemente procesate din mers). 6 - lea versiune a limbii , a anunțat în 2001, a fost disponibil dindecembrie 2015. Înoctombrie 2019, „Perl 6” este în cele din urmă redenumit Raku pentru a evita confuzia cu Perl 5 și pentru a confirma faptul că are două limbi distincte. Îniunie 2020, comunitatea care conduce Perl decide că următoarea versiune majoră a Perl va fi numită în cele din urmă Perl 7.
Programele Perl sunt complet portabile între GNU / Linux , Mac OS X (sau alt UNIX ) și Windows, în ciuda diferitelor denumiri de fișiere ale acestor sisteme (Perl înlocuiește „ / ” cu „ \ ” dacă este necesar, sau chiar „\\”).
Perl permite utilizarea motorului Tk GUI pentru efectuarea I / O. Setul este uneori denumit numele generic Perl / Tk . Extensia Tk a fost integrată în ActivePerl de la versiunea 5.8 a limbii.
Interfețele grafice mai convenabile decât Tk sunt oferite și de bibliotecile CPAN .
TkZinc aduce un aspect modernizat lui Tk. PerlQt acceptă Qt 3.x. Gtk2 acceptă Gtk 2.x. wxperl acceptă wxWidgets . wxWidgets are avantajul de a oferi aspectul nativ al sistemului de ferestre utilizat. Sub Mac OS X , CamelBones oferă acces la API-ul Cocoa .
Perl5, deși interpretat, nu își re-analizează instrucțiunile de fiecare dată când le execută. Fără a crea un bytecode ca alte limbi interpretate, efectuează o trecere de asamblare care traduce constantele, înlocuiește variabilele cu adrese interne și construiește un arbore de sintaxă (AST, Arborele de sintaxă abstract ).
Codul sursă este tradus de instrucțiuni de instruire în AST, optimizat ulterior. Dacă instrucțiunile sunt situate într-un bloc special, cum ar fi BEGIN sau CHECK , acestea sunt executate imediat ce sunt compilate (și, prin urmare, înainte ca restul codului sursă să fie compilat). Acesta este în special cazul modulelor încărcate de instrucțiunile de utilizare . AST, în comparație cu un AST obișnuit, are particularitatea de a conține deja căile de execuție. În timpul fazei de execuție, interpretul urmează, prin urmare, căile prezente în AST și execută instrucțiunile rămase.
Perl 5 nu folosește bytecode în niciun moment. Proiectul de compilare bytecode început în Perl 5.005 de Malcom Beattie nu s-a realizat niciodată. Cu toate acestea, sosirea Parrot poate oferi o nouă soluție.
Mai multe funcții ale bibliotecilor Perl 5 vor fi integrate în Perl 6: astfel analiza va fi integrată în motorul de expresie regulat. Astăzi, în Perl 5, un analizor LALR poate fi scris de modulul Parse :: Yapp , o clonă de yacc . Parse :: RecDescent este un modul care permite scrierea unui analizor descendent recursiv.
Perl are o glumă recurentă la fel de scurtă pentru Pathologically Eclectic Rubbish Lister ( colector patologic de deșeuri mixte ), referindu-se la caracterul său special, plin de semnificații în sintaxa limbii, ca în exemplul următor:
# Un exemple de programme en Perl $message = "À l'endroit : 'camel'.\n"; print $message; $message =~ s/endroit/envers/; $message =~ s/('\w+')/reverse($1)/e; print $message; exit 0și ieșirea sa pe ecran:
À l'endroit : 'camel'. À l'envers : 'lemac'.Al treilea și al patrulea rând al acestui exemplu arată utilizarea expresiilor regulate .
Exemplu clasic:
print "Hello World\n"; # Affiche 'Hello World' suivi d'un retour à la ligneUnele cuvinte au semnificații diferite în Perl și în literatura informatică obișnuită. Iată două exemple:
Perl are o bază mare de utilizatori, dar din ce în ce mai multă concurență din PHP , Python , Ruby , Javascript etc. Limbajul este apreciat de administratorii de sistem, dar și de dezvoltatorii din domeniul bioinformaticii, unde programele sunt supuse unor schimbări constante.
Baza de date CPAN colectează și pune la dispoziția utilizatorilor Perl în mod gratuit 15,4 milioane de linii de cod sub formă de module Perl și sinopse care arată cum să le implementăm.
În Franța, asociația Mongueurs de Perl promovează această limbă, în special prin Zilele Perl.
De obicei, scriem numele acestei limbi cu un P majuscul pentru a indica limba și un p minuscul atunci când vorbim despre interpret : „numai perl analizează corect Perl”. O consecință este că sistemul de evidențiere a sintaxei unui program Perl ar trebui să utilizeze interpretul perl pentru a fi complet corect. În practică, modulele Perl pure, cum ar fi Perl :: Tidy și PPI, pot înțelege corect majoritatea codului curent.
Inițial, proiectantul Perl, Larry Wall , a planificat să-și numească limba „ perlă ”, după o parabolă biblică găsită în Evanghelie după Matei (capitolul 13, versetele 45 și 46). Exista deja un limbaj de programare numit PEARL - pentru multitasking și programare în timp real. Prin urmare, Wall a schimbat ortografia în „Perl”. Diferitele semnificații pe care le găsim astăzi, cum ar fi Extragerea practică și Limbajul raportului, sunt pur și simplu retroacronime .
Black Perl este o poezie de Larry Wall, scrisă în limbajul de programare Perl și în limba engleză.
Code golf este un joc de programare Perl, unde scrieți cel mai scurt program pentru a realiza o sarcină dată.