Documente Academic
Documente Profesional
Documente Cultură
Introducere....................................................................................................................................................4
1. Prezentare generală a limbajului Perl.......................................................................................................5
1.2 Primii paşi spre limbaj........................................................................................................................6
1.3 Caracteristici principale......................................................................................................................7
2. Modulele Perl............................................................................................................................................8
2.1 Conceptul de pachet..........................................................................................................................8
2.2. Conceptul de modul......................................................................................................................9
2.3 CPAN..................................................................................................................................................9
3. Descrierea programului...........................................................................................................................10
3.1 Funcţionalităţi realizate de subrutine................................................................................................10
3.2 Listingul programului:......................................................................................................................12
3.3 Afişarea rezultatelor..........................................................................................................................14
Concluzie....................................................................................................................................................15
Bibliografie.................................................................................................................................................16
Introducere
Creat iniţial pentru prelucrarea sofisticată a informaţiilor textuale, Perl (Practical Extraction and
Report Language) îl are ca părinte pe Larry Wall, în decursul timpului la dezvoltarea limbajului
contribuind şi alţi numeroşi programatori. Distribuit gratuit, Perl a devenit favoritul administratorilor de
sistem şi al programatorilor de aplicaţii Web, însă poate fi utilizat asemeni altui limbaj general. Ca şi
Linux, Perl a crescut în mediul prielnic al Internetului. Pe data de 18 decembrie 2008 s-au împlinit 21 ani
de la apariţia limbajului. În curs de dezvoltare este versiunea Perl 6 a limbajului.
Iniţial, limbajul a fost conceput special pentru mediile UNIX, împrumutând o serie de facilităţi
oferite de shell-urile şi utilitarele standard şi păstrând filosofia de bază a UNIXului, dar în prezent Perl
este disponibil pentru toate platformele actuale (e.g. Mac OS, Windows sau OS/2).
În proiectarea limbajului s-au avut în vedere următoarele principii:
• lucrurile simple să se poată realiza uşor, iar cele complexe să nu fie imposibil de implementat;
• există mai multe modalităţi de realizare a unui program, în funcţie de gradul de cunoaştere a
limbajului de către dezvoltatorul acelui program.
Drept caracteristici importante ale limbajului se pot enumera:
• modularitatea
Perl oferă suport pentru mai multe paradigme de programare, ca de exemplu cea procedurală şi cea
orientată-obiect; limbajul poate fi extins prin intermediul aşa numitelor module, punându-se la dispoziţie
un număr impresionant de module standard;
• portabilitatea
Programele Perl se pot executa fără modificări pe orice platformă;
• expresivitatea şi puterea
Limbajul dispune de mecanisme puternice pentru manipularea datelor, prin intermediul expresiilor
regulate şi a tablourilor; de asemenea, Perl poate fi folosit ca limbaj de sistem pentru lucrul cu entităţi ale
sistemului de operare (fişiere, dispozitive, procese, socket-uri);
• viteza de dezvoltare a aplicaţiilor
Ciclul compilare-execuţie-depanare se poate realiza şi itera rapid; Perl nu oferă un interpretor clasic,
ci un compilator-interpretor.
Fiind gratuit şi posedând numeroase mijloace de documentare online, Perl poate fi folosit în special
pentru dezvoltarea rapidă de aplicaţii de administrare a sistemului de operare şi destinate Web-ului,
reprezentând un mediu ideal pentru conceperea script-urilor CGI.
Mai mult, anumite servere Web (e.g., Apache) includ interpretoare Perl interne.
2
1. Prezentare generală a limbajului Perl
1.1 Disponibilitate şi documentaţii
Mediul Perl se poate obţine de pe Internet, via FTP sau HTTP, prin intermediul locaţiilor CPAN
(Comprehensive Perl Archive Network). Principala sursă este ftp://ftp.funet.fi, dar se pot folosi şi alte
locaţii, listate la http://www.perl.com/CPAN/.
De asemenea, orice distribuţie actuală de Linux include interpretorul şi manualele standard Perl.
Pentru Windows, platforma Perl cea mai populară este ActivePerl, disponibilă şi pe CD-ul volumului S.
Buraga et al., Programare Web în bash şi Perl, Polirom, Iaşi, 2002: http://www.infoiasi.ro/~cgi/.
Pentru a genera codul executabil al interpretorului Perl din sursele preluate din Internet, pentru un mediu
UNIX (Linux) va trebui să scriem următoarele linii de comenzi de la prompt-ul sistemului, ca utilizatori
cu drepturi de root:
(infoiasi)$ ./configure # pentru configurare automata
(infoiasi)$ ./Configure # pentru configurare manuala
(infoiasi)$ make
(infoiasi)$ make test
(infoiasi)$ make install
Perl include o serie de documentaţii online care pot fi parcurse prin intermediul binecunoscutei
comenzi man (încercaţi, de exemplu, man perl). Pentru anumite detalii sau documentaţii referitoare la
modulele Perl, se poate folosi comanda perldoc. Astfel, dacă dorim să aflăm amănunte despre funcţia
standard Perl printf vom da perldoc printf. De asemenea, putem recurge la opţiunea -f pentru a afla
detalii despre o funcţie (e.g. perldoc -f connect).
Paginile de manual cele mai importante sunt:
- perl - o trecere în revistă a documentaţiilor Perl;
- perlfaq - răspunsuri la întrebările puse frecvent despre Perl (Frequently Asked Questions - FAQ);
- perlsyn - sintaxa limbajului (vezi şi perlrun – execuţia script-urilor Perl, perldebug – depanarea
programelor, perlstyle - ghid de stil, perlfunc - funcţii predefinite, perlsub - subrutinele Perl);
- perldata - structurile de date Perl (vezi şi perlre - expresii regulate, perldsc - introducere în
structuri de date, perllol - liste de liste, perlref - referinţe, perlvar - variabile predefinite);
- perlop - operatorii şi precedenţa lor;
- perlmod - modulele Perl (vezi şi perlmodlib);
3
- perlobj - suport pentru programarea obiectuală (vezi şi perltool - tutorial privind programarea
orientată-obiect, perlbot - exemple de obiecte).
Pentru a avea acces la una dintre documentaţiile dorite, este suficient să tastăm, de exemplu, man
perlsyn. Versiunile mai vechi de Perl puneau la dispoziţie documentaţia în format text (Plain Old
Documentation - POD). Pentru amănunte, consultaţi man pod, iar pentru a o converti în alte formate se
pot folosi comenzile pod2man, pod2html sau pod2text.
De asemenea, cititorii interesaţi pot parcurge articolele postate pe grupurile de ştiri comp.lang.perl
sau documentaţiile în format hipertext de la http://www.perl.com/perl/.
4
Figura 1.1 Modalitatea de execuţie a unui script Perl
2. Modulele Perl
2.3 CPAN
Succesul limbajului Perl rezidă, în principal, din posibilitatea de a extinde limbajul cu noi
funcţionalităţi oferite de module. În afara modulelor din distribuţiile Perl standard, există o colecţie
globală a tuturor materialelor publice referitoare la Perl, colecţie referită sub denumirea CPAN
7
(Comprehensive Perl Archive Network). CPAN oferă un număr impresionant de module grupate pe
următoarele categorii:
• extensii de limbaj şi unelte de documentare;
• suport pentru dezvoltare de programe/module;
• interfeţe (la nivel scăzut sau ridicat) cu sistemul de operare;
• comunicarea între procese, în reţea şi controlul dispozitivelor (e.g., modemuri);
• tipuri de date şi conversii;
• interfeţe cu bazele de date;
• interfeţe cu utilizatorul;
• interfeţe cu alte limbaje de programare;
• procesarea fişierelor şi sistemelor de fişiere;
• procesarea caracterelor;
• procesarea fişierelor de configuraţie şi a parametrilor în linia de comandă;
• suport pentru diverse limbi şi alfabete (internaţionalizare);
• autentificare, securitate şi criptare;
• suport pentru poşta electronică şi grupurile de ştiri;
• suport pentru Web (HTML, HTTP, CGI, XML etc.);
• utilitare pentru daemoni;
• suport pentru arhivarea şi compresia datelor;
• procesarea informaţiilor grafice;
• controlul fluxului (excepţii, erori etc.);
• procesarea fluxurilor de date şi a fişierelor;
• altele.
Pentru un listing al tuturor locaţiilor Internet referitoare la CPAN, consultaţi
http://www.perl.com/perl/.
3. Descrierea programului
3.1 Funcţionalităţi realizate de subrutine
1. Crearea fişierului F1 care va conţine textul introdus de la tastatură. (Adverbe)
Am creat fişierul lista_adverbe.txt, în care am introdus un număr oarecare de adverbe în limba română.
8
2. Citirea şi prelucrarea fişierului conform sarcinii individuale. Am ales selectarea adverbelor ce au
prefixul de.
open (C, "<C:/Perl/bin/lista_adverbe.txt");
print "Iata textul:\n";
3. Formarea listei L1 în memoria operativă în care se vor păstra rezultatele din p.2.
chomp(@lista);
print "Lista formata dupa selectare:\n";
print "@lista\n";
9
{print "$v\n"}
8. Înregistrarea în fişierul F3 a rezultatelor obţinute în punctul 7.
while (($key, $value) = each(%h))
{print fisier3 " cheia=$key"," valoarea=$value\n"}
#!/usr/bin/perl -w
$i=0; @lista=();
open (C, "</home/student/Desktop/teza/lista_adverbe.txt");
$data="*"x 40;
print "$data\n";
print " 1 - afisare lista1\n 2 - lista sortata\n 3 - citirea fisierului F2 \n 4 - afisarea tabelei hash \n";
$data="*"x 40;
print "$data\n";
if(<stdin>==1) {
while (<C>)
{$v =$_; if ($v=~m/^de/) { $lista[$i++] = $v ; }}
chomp(@lista);
print "\nLista adverbelor ce se incep cu de:\n\n";
print "@lista\n";}
$data="*"x 40;
print "$data\n";
print " 1 - afisare lista1\n 2 - lista sortata\n 3 - citirea fisierului F2 \n 4 - afisarea tabelei hash \n";
$data="*"x 40;
print "$data\n";
if(<stdin>==2) {
print"\n\nLista sortata\n\n";
@listas = sort (@lista);
print "@listas\n\n";
10
close (C);}
$data="*"x 40;
print "$data\n";
print " 1 - afisare lista1\n 2 - lista sortata\n 3 - citirea fisierului F2 \n 4 - afisarea tabelei hash \n";
$data="*"x 40;
print "$data\n";
if(<stdin>==3) {
open fisier2, ">fisier2.txt";
print fisier2 "@listas\n\n";
close fisier2;}
$data="*"x 40;
print "$data\n";
print " 1 - afisare lista1\n 2 - lista sortata\n 3 - citirea fisierului F2 \n 4 - afisarea tabelei hash \n";
$data="*"x 40;
print "$data\n";
if(<stdin>==4) {
$i=1; foreach (@listas)
{ $h{$i} = $_;
$i++; }
open (fisier3, ">fisier3.txt");
11
foreach $value (sort {$h{$a} cmp $h{$b}} keys %h)
{print fisier3 "$value $h{$value}\n";}
close fisier3;
12
3.3 Afişarea rezultatelor
13
Concluzie
Perl este un limbaj de programare general iniţial dezvoltat pentru manipularea de text şi în prezent
folosit pentru o gamă largă de aplicaţii inclusiv administrarea de sisteme, dezvoltare web, aplicaţii de
reţea, interfeţe grafice şi altele.
Limbajul intenţionează să fie mai degrabă practic - uşor de folosit, eficient. Caracteristicile principale
sunt uşurinţa de utilizare, suport pentru programare procedurală şi obiectuală, are integrat un puternic
suport pentru procesarea de text şi o colecţie mare de module provenite de la terţi.
Modulele (pachetele) Perl reprezintă unităţi de cod precompilat, încapsulând diferite funcţionalităţi
oferite programatorilor.
Un pachet Perl poate fi considerat drept implementarea unei clase pe care o putem instanţia în cadrul
unui script. Subrutinele incluse într-un pachet pot juca, de asemenea, rolul de metode, existând
posibilitatea definirii de constructori şi destructori. Mai mult, se oferă suport pentru derivarea unei
metode aparţinând unui pachet, astfel încât pachetele Perl pot fi ierarhizate.
Succesul limbajului Perl rezidă, în principal, din posibilitatea de a extinde limbajul cu noi
funcţionalităţi oferite de module. În afara modulelor din distribuţiile Perl standard, există o colecţie
globală a tuturor materialelor publice referitoare la Perl, colecţie referită sub denumirea CPAN
(Comprehensive Perl Archive Network). CPAN oferă un număr impresionant de module grupate pe
categorii.
14
Bibliografie
15