curs 2 - 24 februarie 2011 adrian iftene...
TRANSCRIPT
![Page 2: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/2.jpg)
PERL◦ Introducere
◦ Variabile, cicluri repetitive
◦ Subrutine, lucrul cu fişiere
◦ Vectori, Hash-uri, operatori, substr
Expresii Regulate◦ Ancore
◦ Scurtături
◦ Alternative
◦ Repetiţia
◦ Substituţia
◦ Transliteration
◦ Backreferences
![Page 3: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/3.jpg)
Acronimul este de la Practical Extraction and Reporting Language şi iată care a fost
evoluţia sa în timp:
Apariţie: 1986
Lansare: 1987
Larry Wall: http://www.perl.com
![Page 4: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/4.jpg)
(1) Limbaj de tip SCRIPT (un set de instrucţiuni, care realizează o funcţie). Permite orice începând cu SCRIPTURI simple pentru administrarea de sisteme pâna la aplicaţii sofisticate ale end-user-ilor.
(2) Larry Wall: “Lucrurile uşoare trebuie făcute uşor şi lucrurile dificile trebuie făcute posibile.”
(3) Viteza şi uşurinţa cu care programatorii îşi pot scrie programele.
(4) Programele Perl nu se prăbuşesc niciodată şi pot fi verificate cu built-in debugger-ul (depanatorul incorporat al) limbajului.
![Page 5: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/5.jpg)
(1) Text: Prelucrarea şirurilor se face uşor şi natural datorită caracteristicilor puternice de recunoaştere a şabloanelor
(2) Fişiere: Deschidere, citire şi scriere de fişiere care conţin text şi date liniare
(3) Reţele: Descrierea CLIENTULUI şi SERVERULUI pentru reţelele TCP/IP
(4) Managementul memoriei: garbage colector
![Page 6: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/6.jpg)
(6) Dezvoltarea rapidă a aplicaţiei: Utilizarea librăriei mari de funcţii
(7) Robusteţea: Programele Perl nu se prăbuşesc. Detectarea şi tratarea erorilor, inclusiv asignarea lor sistemului Unix sunt suportate peste tot
(8) Depanator: Perl include un depanator care urmăreşte evaluarea şi inspecţia programelor.
![Page 7: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/7.jpg)
1) Viteza de evaluare şi dimensiunile programelor nu pot concura cu alte limbaje de programare pentru că Perl este scris în C.
2) Programele Perl din biblioteci se schimbă. Utilizarea lor cu timpul este problematică.
3) Nu sunt constrângeri în utilizarea tipurilor, o variabilă putând fi folosită şi ca şir, ca număr sau ca obiect.
4) Perl nu este recomandat pentru scrierea de soft care să rămână secret
![Page 8: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/8.jpg)
Programul “Hello World!” (limbajul e key sensitive!!!)
Variabilele $n, $culoare, @vector, %hash
#!/usr/bin/perl
print "Hello World!";
- Locul unde se găsesc
librăriile Perl.
- În Windows e inutilă
Afişarea unui mesaj pe
ecran
![Page 9: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/9.jpg)
$culoare = "alb";
$fond = "$culoare de fond";
print $fond;
>alb de fond
$culoare = "alb";
$fond = „$culoare de fond‟;
print $fond;
>$culoare de fond
![Page 10: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/10.jpg)
$n = 5;
$m = '$n';
print "$n * $n ";
print eval("$n * $n");
print eval("$m * $m");
> 5 * 5 25 25
![Page 11: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/11.jpg)
$x=1; $y = 2;
print "\n",$x+$y,"\n";
print $x.$y;
>3
12
print int rand 1000;
> Un număr întreg între 0 şi 1000
![Page 12: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/12.jpg)
print ”Taxa studenţilor este de \$100.\n”;
> Taxa studentilor este de $100.
print „Taxa studenţilor este de \$100.\n‟;
> Taxa studentilor este de \$100.\n
![Page 13: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/13.jpg)
@v=();
$v[1] = 5;
$v[3] = 7;
for($i=0; $i<=$#v; $i++)
{
if(defined($v[$i]))
{ print $v[$i],“ “; }
}
>5 7
Atenţie {} sunt obligatorii
în while, for, foreach, if, else !!!!
![Page 14: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/14.jpg)
foreach $element(@v)
{print $element, " ";}
sau
print @v;
Ieşirea din ciclu se poate face forţat cu last, next, redo
$i=0; while($i<=10) {$i++; …}
foreach $i(0..10) {…}
![Page 15: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/15.jpg)
HelloName1(“Ionel”, ”Costel”);
HelloName2(“Ionel”, “Costel”);
sub HelloName1
{$name1 = shift; $name2 = shift;
print “Hello $name1!”; print “Hello $name2!”;
}
sub HelloName2
{foreach $name(@_) {print “Hello $name!”;}
}
![Page 16: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/16.jpg)
my $filename = 'fis.txt';
open FILE, $filename or die "Cannot read '$filename'!";
#cel mai folosit mod de afisare continut
while(<FILE>) #operatorul <>
{
print $_; #variabila implicita $_
#care reprezinta linia curenta
}
close FILE;
![Page 17: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/17.jpg)
@continut = <FILE>;
#echivalent cu
print while(<FILE>); #se foloseste variabila implicita$_
#echivalent cu
print @continut;
#echivalent cu:
for($i=0;$i<=$#continut;$i++)
{print $continut[$i],"\n";}
![Page 18: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/18.jpg)
my $filename = 'fis.txt';
open FILE, "> $filename" or die "Nu putem citi'$filename': $!";
print FILE "Test";
close FILE;
“>$fisier” => creare + scriere
“>>$fisier” => adăugare
![Page 19: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/19.jpg)
%hash = (“key 1”,”value 1”, “key 2” =>”value 2”);
$hash{“key 3”} = “value 3”;
$hash{1} = “value x”;
foreach $key(sort keys %hash)
{
print "\n$key =>".$hash{$key};
}
if(defined($hash{“key 1”})) {print “Exista!”;}
> key 1 => value 1
key 2 => value 2
key 3 => value 3
![Page 20: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/20.jpg)
Comparare◦ Numere: ==, <=, >=, !=, <, >
◦ Altceva: eq, le, ge, ne, lt, gt
Logici◦ &&, ||, !
![Page 21: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/21.jpg)
$string = "Ana are mere.";
print substr($string,4),"\n";
print substr($string,-4),"\n";
print substr($string,4,3),"\n";
print substr($string,4,-3),"\n";
print substr($string,-4,2),"\n";
>are mere.
ere.
are
are me
er
![Page 22: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/22.jpg)
$string = "Ana are mere.";
print index($string,"re"); #cauta din stanga
print rindex($string,"re"); #cauta din dreapta
print index($string,"re",6); #cauta din stanga
#dupa pozitia 6
print rindex($string,"re",7); #cauta din dreapta
#dupa pozitia 7
>5 10 10 5
![Page 23: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/23.jpg)
Expresiile Regulate ne permit căutarea de «șabloane» în datele noastre. Vom putea: ◦ Verifica ca fiecare propoziție dintr-un fișier începe cu o
literă mare și se termină cu punct;
◦ Ști de câte ori un nume este specificat într-o lucrare ;
◦ Vedea dacă avem o secvență oarecare de numere în reprezentare zecimală cu lungimea mai mare de cinci
Termenul de Expresie Regulată (Regular Expression notata «RegExp» sau chiar «RE») ◦ se referă la un șablon ce urmează regulile unei sintaxe
prezentate în continuare
![Page 24: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/24.jpg)
my $gasit = 0 ;
$_ = ‟‟Nimeni nu vrea sa te raneasca… Numai ca eu mai ranesc oamenii uneori.‟‟ ;
my $sablon = ‟‟oamenii‟‟ ;
foreach my $cuvant (split) {
if ($cuvant eq $sablon) {
$gasit = 1; last;}
}
if ($gasit) {
print ‟‟Succes! Am gasit cuvantul „oamenii‟\n‟‟;
}
![Page 25: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/25.jpg)
$_ = ‟‟Nimeni nu vrea sa te raneasca… Numai ca eu mai ranesc oamenii uneori.‟‟ ;
if ($_ =~ /oamenii/) {
print ‟‟Succes! Am gasit cuvantul „oamenii‟\n‟‟;
}
#folosind variabila implicita $_ e echivalent cu
if (/oamenii/) {
print ‟‟Succes! Am gasit cuvantul „oamenii‟\n‟‟;
}
![Page 26: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/26.jpg)
. * ? + [ ] ( ) { } ^ $ | \
$_ = ‟‟Nimeni nu vrea sa te raneasca… Numai ca eumai ranesc oamenii uneori.‟‟ ;
if ($_ =~ /\./) {
print ‟‟Avem \”.\” in text!\n‟‟;
}
![Page 27: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/27.jpg)
Cele două ancore pe care le avem sunt:◦ ^, care apare la începutul pattern-ului și ancorează
potrivirea pentru începutul șirului, și
◦ $ care apare la sfârșitul pattern-ului și este ancorat către sfârșitul șirului.
Care e semnificaţia lui \.$ ?
Dar a lui ^N
![Page 28: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/28.jpg)
my $silaba = “are”;
$filename = 'fis.txt';
my open FILE, “< $filename” or die "Nu putemciti '$filename': $!";
while(<FILE>)
{
print if /$silaba$/;
}
close FILE;
![Page 29: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/29.jpg)
Care e semnificaţia următoarelor şabloane:
C[aiou]telul C[^ai]telul
![Page 30: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/30.jpg)
$_ ="123 ana are mere 3452";
$sablon = '([\d]+)'; #sau $sablon = "([\\d]+)";
while(/$sablon/g) #g – vine de la globally
{
print $1 . " ";
}
>123 3452
![Page 31: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/31.jpg)
lui|dumnealui, lu(i|t), (lui)|(lut)|(luna amara)
lu(i|t|na amara)
$_ = "catelul lui era de lut.";
$sablon = "lu(i|t)"; # echivalent cu lu[it]
while(/$sablon/g){
print $` . "\n" . $& . "\n" . $'."\n";}
>catelul inainte de potrivire $`
lui potrivirea $&
era de lut. dupa potrivire $‟
catelul lui era de inainte de potrivire (2)
Lut potrivirea (2)
. dupa potrivire (2)
![Page 32: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/32.jpg)
Nedefinită
Bine definită
![Page 33: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/33.jpg)
$_ = "catelul latra haaaammmm";
$sablon="a{2,}";
while(/$sablon/g){
print $& . "\n“;} aaaa
$sablon="a{2}";
while(/$sablon/g){
print $& . "\n“;} aa
aa
$sablon="a{1,2}";
while(/$sablon/g){
print $& . "\n“;}
![Page 34: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/34.jpg)
$sir = “Ana are mere.”;
$sir =~ s/a/1/;
> An1 are mere
$sir =~ s/a/1/g;
>An1 1re mere.
$sir =~ s/a/1/gi;
>1n1 1re mere.
![Page 35: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/35.jpg)
$sir = “Ana are mere.”;
@words = split(“ “, $sir);
foreach $word(@words)
{print $word,”\n”;}>Ana
are
mere.
$sirnou = join(“%”,@words);
print $sirnou;>Ana%are%mere.
![Page 36: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/36.jpg)
$sir = “Ana are mere.”;
$sir =~ tr/abcdefghij/0123456789/;
print $sir;>An0 0r4 m4r4.
$sir =~ tr/0123456789/abcdefghij/; >Ana are mere.
my $vocale = ($sir =~ tr/aeiou//);
print $vocale;
>5
![Page 37: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/37.jpg)
$string = "Ana are mere.";
if($string =~ /(.*)/)
{ print $1,"\n“;}>Ana are mere.
if($string =~ /(.*) (.*)/)
{ print $1,"\n",$2;}>Ana are
mere.
=> Comportarea de tip Greedy a operatorilor +, *
![Page 38: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/38.jpg)
Eliminarea comportării de tip Greedy:
$string = "Ana are mere.";
if($string =~ /(.*?) (.*)/)
{ print $1,"\n",$2;}
>Ana
are mere.
![Page 39: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/39.jpg)
$string = "Ana are mere.";
while($string =~ /([a-zA-Z]+)/)
{ print $1;}>AnaAnaAnaAnaAnaAnaAnaAnaAnaAnaAna…
while($string =~ /([a-zA-Z]+)/g)
{ print $1,"\n“;}>Ana
are
mere
![Page 40: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/40.jpg)
Implementaţi o structură de întregi implementând operaţiile de bază asupra ei: citire, afişare, element minim, suma elementelor, sortare.
Citirea unei variabile de la tastatură se face ca mai jos:
$n = <STDIN>;
chomp($n);
Rezultatele se vor afişa în fişier.
Elimină <Enter>
![Page 41: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/41.jpg)
Folosind împărţirea pe cuvinte cu split: ◦ Câte rânduri conţine fişierul de lucru?
◦ Câte cuvinte de cel puţin 8 litere avem?
◦ Precizaţi numarul rândurilor care încep cu o vocală.
◦ Număraţi vocalele
![Page 42: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/42.jpg)
Folosind unul fişier text creaţi două proceduri: ◦ Prima de codificare – care va lua conţinutul primului
fişier, îl va codifica şi va pune rezultatul într-un fişier de ieşire;
◦ A doua de decodificare – care va face operaţia inversă procedurii de mai sus.
În final se vor compara fişierul de intrare şi fişierul rezultat în urma decodificării. Sunt ele identice?
![Page 43: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/43.jpg)
Parsaţi fişierul QA_EN.xml
Pentru un id de întrebare afişaţi pe rânduri diferite:◦ source_lang
◦ target_lang
◦ question
<q q_id="0001" source_lang="BG" target_lang="EN">What has forced THE SIMPLIFICATION AND HARMONIZATION OF THE CUSTOM PROCEDURES?</q>
Demo cu extragera q_id-urilor
![Page 44: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/44.jpg)
Extrageţi din întrebări următoarele:◦ Numerele simple şi cele cu virgulă
◦ Datele calendaristice
◦ Cuvintele care încep cu literă mare
◦ Cuvintele cu toate literele mari
◦ Citatele de forma “text”
Număraţile
![Page 45: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/45.jpg)
1) Direct în conturile de la facultate folosind un editor oarecare şi creând fişiere cu extensia .pl sau .cgi. Rularea cu
> perl nume_program.pl
2) În Windows instalând ActivePerl şi Perl Express ca IDE
![Page 46: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/46.jpg)
1) Instalaţi Active Perl (presupunem în c:\Perl)
![Page 47: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/47.jpg)
2) Instalaţi Perl Express şi setaţi în View -> Options calea către Perl
![Page 48: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/48.jpg)
Selectaţi în Perl Express directorul curent de lucru
![Page 49: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/49.jpg)
Folosit pentru importul bibliotecile externe (Perl package manager)
![Page 50: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/50.jpg)
Pagina curs PERL http://thor.info.uaic.ro/~adiftene/Scoala/2008/PBR_Perl/
Active Perl http://www.activestate.com/activeperl/
Perl Express http://www.perl-express.com/download.html
Cărţi Perl http://www.unix.org.ua/orelly/
http://www.unix.org.ua/orelly/perl/cookbook/index.htm
![Page 51: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/51.jpg)
#!/usr/bin/perl
use Switch;
$val = 1;
switch($val){
case 1 {print “Numarul 1”}
case “a” {print “Caracterul a”}
case [1..10] {print “Un umar intre 1 si 10”}
else {print “Alta valoare”}
}
![Page 52: Curs 2 - 24 Februarie 2011 Adrian Iftene adiftene@info.uaicadiftene/Scoala/2011/LI/Cursuri/LI02.pdf · Curs 2 - 24 Februarie 2011 ... (depanatorul incorporat al) limbajului. (1) Text:](https://reader033.vdocuments.site/reader033/viewer/2022041718/5e4ce462672ff270e34d4fda/html5/thumbnails/52.jpg)
Comentariu pe o linie# comentariu
Comentarii pe mai multe linii q^
Comentariu
Pe
Mai
Multe
Linii
^;