Professional Documents
Culture Documents
com
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
1 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
ste dosli do stadijuma kada prepoznajete kada je sta prikladnije potrebno je - vreme.
2 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
3 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
4 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
5 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
6 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
7 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
download perl-a sa zvanicnog sajta Korak 6 - Sacekamo koji minut dok se fajlovi i dokumentacija ne raspodele na disk.
Sada moramo proveriti uspesnos instalacije Perl-a na Windows. Idemo na START > RUN. Ukucamo "cmd" i kliknemo na OK.
8 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Korak 9 - "DOS" je spreman za unos komandi. Hajde da proverimo koja je verzija Perl-a u pitanju. Unosimo komandu "perl -v".
Sada idemo u direktorijum gde smo intalirali Perl. Kucamo prvo "c: \", zatim "cd perl". Ako smo sve uradili kako treba sada smo u direktorijum "c:\Perl".
9 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Otvorite Notepad ili neki drugi editor koji koristite i prekopirajte sledeci source-kod u fajl hello.pl. Snimite ga u direktorijum "c:\Perl".
Da vidimo sta ima u direktorijumu "c:\Perl". Listanje sadrzaja aktiviramo komandom starom dobrom DOS komandom "dir".
10 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Ako dobijete sledeci rezultat kada otkucate hello.pl i pritisnete ENTER, Perl je instaliran i sve radi kako treba.
Perl i BSD/Unix/Linux
Ukoliko koristite neki od UNIX ili Linux sistema, sasvim je izvesno da cete imati punu podrsku za Perl, tj. da je Perl vec instaliran kod vas. Koristite komandu "perl -v" u vasem terminalu da bi proverili Perl instalaciju. Ako Perl nemate, radite na cudnom sistemu :) Perl mozete skinuti sa sledece adrese: http://www.perl.org/get.html. Konkretno autor ovog teksta najvise voli da radi na OpenBSD sistemu. Brzo se instalira, brzo podesava, moze da radi na starijim masinama i radi stabilno, sto je najbitnije. Neki ga smatraju "teskim", ali to je stvarno nezahvalno reci, pogotovo ako nisu radili u njemu. Da skratim pricu, ucinite uslugu sebi, i probajte OpenBSD.
11 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Na OpenBSD sistemu koristim skoro uvek August. Pre ili kasnije trebace vam Vi. Svojevremeno sam na Linux-u koristio Kate. Sta god da odaberete u pocetku - neka bude jednostavno i neka ima opciju syntax highlighting, tj. bojenja source-a kako bi ste se lakse snasli u gomili cudnih znakova :)
Ako koriste Windows, snimite prethodni source u neki fajl, npr : pozdrav.pl . Rekli smo da cemo program snimati u "c:\Perl". Nakon snimanja programa, pokusajte da ga pokrenete otvaranjem "DOS-a". 1. 2. 3. 4. 5. Idemo na START > RUN Ukucamo "cmd", pritisnemo ENTER. Pojavi se "DOS" Odemo u "c:\Perl" (komandom "cd Perl") kucamo pozdrav.pl, pritisnemo ENTER
Ukoliko ste sve uradili kako treba, trebalo bi da dobijete sledeci rezultat:
12 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Za vas koji koriste UNIX i slicne sitema, ako program nece da se pokrene, probajte sa komandom:
$ chmod a+x pozdrav.pl
Ukoliko niste snimili program sa ekstenzijom .pl , to nije problem. Unix-oliki sistemi automatski prepoznaju sta treba da rade, pa mozete koristi i ovo:
$ chmod a+x pozdrav
Kad zavrsite sa prethodnim komandama kojima vas program postaje "izvrsiv", pokusajte program pokrenuti sa:
$ ./pozdrav
Analiza programa
Da se vratimo na:
#!/usr/bin/perl print "Hello World\n"; #!/usr/bin/perl
- ovo je takozvana "shebang" linija. Ona govori sistemu u kom ste programskom jeziku pisali source. Tu nista nema za dodati i oduzeti, jednostavno shebang linija je standard. Onda ide uvek u vrh programa.
print
- ovo je Perl-ova komanda kojom se stampa tekst na ekran. Postoji jos mnogo komandi za razne namene. O njima kasnije.
Hello World
- ovo je neki tekst koji se stampa. Mozete ubaciti koja god hocete slova i brojeve izmedju navodnika.
\n";
- se stavlja na kraju komande obavezno. Ovo "\n" je komanda za prelazak u novi red tako da tekst bude u linijama, a ne sve recenice jedna do druge :)
13 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Zatim, zadajemo komandu za prikaz na monitoru - print, zajedno sa recenicom pod navodnicima (navodnici su obavezni, kao i \n; na kraju recenice):
#!/usr/bin/perl print "Ovo je prva recenica\n";
#Ovo sto vidite ovde #Su komentari source-a #Koje pisu Programeri da bi se prisetili sutra sta su pisali juce :) #Komentari pocinju sa znakom #
Snimite ovaj program kao redovi.pl u "C:\Perl", i idemo da ga pokrenemo: 1. 2. 3. 4. 5. Idemo na START > RUN Ukucamo "cmd", pritisnemo ENTER. Pojavi se "DOS" Odemo u "c:\Perl" (komandom "cd \", i komandom "cd Perl") kucamo redovi.pl, pritisnemo ENTER
14 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Za sve ovo sto sledi nece vam trebati vise od par minuta, zato obratite paznju i dobro savladajte materiju. Trebace vam i za programiranje u drugim programskim jezicima, ako nista drugo.
15 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Zatim kucamo komandu cmd ili command, pa pritisnemo ENTER ili kliknemo na OK.
Ukoliko vam se otvori sledeci DOS prozor, sve je u redu i mozete zadavati komande preko tastature. Svaku komandu zavrsavate pritiskom ENTER-a.
16 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
17 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
18 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Kao sto vidite, imamo rezultat. Nasli smo Perl fajlove: hello.pl, redovi.pl, pozdrav.pl.
Dobro ste uocili, nasli smo fajl hello.pl, ali i folder (direktorijum) html.
Pitanje za vas:
Mozete li sada, po secanju, da uradite sve prethodno od pocetka, tj. odete u folder Perl, napisete neki mali Perl programcic koji stampa neke redove, i pokrenete ga ? Ako ne mozete, nema veze. Nasa memorija zavisi od mnogo faktora, od toga koliko ste umorni, do toga koliko ste motivisani. Sve ce doci na svoje mesto nakon izvesnog vremena. Potrebno je samo da vi zelite nauciti Perl ili neki drugi jezik, kako bi sutradan imali sta staviti u CV ili zaraditi pare od programiranja. Samo opusteno.
Brojevi u Perl-u
Sazetak:
19 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Ne zamarajte se matematikom ako vam nije jaca strana, ako vam bude trebalo, naucicete.
Celobrojne vrednosti
12 54 -43 -28 4874 -2546 1845267221
Prethodni broj, ako vam je mrsko tumaciti, mozete napisati i kao 1_845_267_221
Nedekadne vrednosti
Verovatno ste culi, bar sto se racunara tice, da postoje i drugi numericki sistemi sem onog koga se sluzimo svakodnevno. To je binarni sistem (nule i jedinice), heksadekadni sistem (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) i oktalni sistem. Ponavljam, nemojte da se opterecujete ovim, ako vam bude trebalo, Internet je pun informacija. U vecini slucajeva, trebace vam dekadni sistem, koga vec znate.
20 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
10 % 3 # jeste 1
Ovo zadnje sto smo naveli nije postotak, nego modulo. Modulo je ostatak deljenja a posto je 10 : 3 = 3, a ostaje 1 do 10, onda je modulo 1 :)
~*~
21 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
~*~
Idemo na sledecu lekciju, o brojevima i konverzijama se za sada ne brinite, Perl je tu da se uhvati u kostac sa onim racunskim radnjama koje mu zadate, vase je samo da znate kako da definisete zadatak. Napomena: Ako vam nekad bude trebalo, ne zaboravite da na Windows-u imate kalkulator sa opciom Scientific za kompleksnija izracunavanja.
Obrat\' paznju
Jednostruki navodnici, ili polunavodnici, imaju zadatak da Perl-u pokazu pocetak i kraj nekog znakovnog niza. Oni sami po sebi nisu deo znakovnog niza, samo sluze kao pokazivaci.
22 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
A evo i source-a za gore-navedeno, program cemo snimiti kao jednostruki.pl u "c:\Perl" direktorijum, tj. folder.
#!/usr/bin/perl print print print print print print print print 'ovo je znakovni niz' . "\n"; 'i ovo je' . "\n"; 'ovo su brojevi u znakovnom nizu 4 3 1 2 3 451.22' . "\n"; 'obratite paznju na grama\'tku' . "\n"; 'jer mozete napravit\' pometnju ako ubacite vise jednostrukih navodnika' . "\n"; 'unutar znakovnog niza' . "\n"; 'znaci, da bi prikazal\' jednostruki navodnik, u znakovnom nizu' . "\n"; 'stavite ispred njega kosu crtu, \'vako.' . "\n";
Napomena: Ova tacka izmedju znakovnog niza i "\n"; sluzi da spoji ta dva u jednu komandu.
Razlika Postoji
Da, postoji znatna razlika izmedju znakovnih nizova sa jednostrukim i znakovnih nizova sa dvostrukim navodnicima. Ako ste obratili paznju na prethodnu lekciju o jednostrukim navodnicima, videcete da je u source-u koristen "\n";, znaci, radi se o specijalnom znaku. Postoje mnogi specijalni znaci koji imaju posebno znacenje kada se ubace pod dvostruke navodnike, eneki od njih su:
\L \l #Prebacuje sva slova u niska #prebacuje sledece slovo u nisko
23 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
\U \u \n \t \a \E
#Prebacuje sva slova u visoka #Prebacuje sledece slovo u visoko #Zapocinje novu liniju, gle cuda :) #Razmice za jedan "Tab" #Zvono #Predstavlja kraj komande kada se koristi \L ili \U
A moze i ovako:
"Ja Ucim Perl, " . "i za sada mi sasvim dobro ide."
A moze i ovako:
'Ja Ucim Perl, ' . 'i za sada ' . "mi sasvim dobro ide" . "."
Idemo sad da to prebacimo u source. Napisacemo mali Perl programcic "nizovi.pl", i stavicemo ga tamo gde smo i do sada stavljali nase pocetne programe, u "C:\Perl".
#!/usr/bin/perl #Snimite program kao nizovi.pl print "Ja " . "Ucim Perl" . ", " . "i za sada mi sasvim dobro ide." . "\n"; print "Ja Ucim Perl, " . "i za sada mi sasvim dobro ide." . "\n"; print 'Ja Ucim Perl, ' . 'i za sada ' . "mi sasvim dobro ide" . "." . "\n";
24 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Napomena: Ako ste se malo zbunili sa ovoliko tackica za povezivanje reci, samo vezbajte sa nekom svojom kracom recenicom. Mozete cak i povezivati slova u rec, za pocetak.
Operator Ponavljanja ( x )
Pre ili kasnije zatrebace vam vise istih znakovnih nizova, jedan do drugog. Da bi to uradili u Perl-u, koristicete operator "x". Bitno je znati, da navedeni operator, uzima ono sto mu je sa leve strane, i da napravi tacno onoliko kopija koliko navedite u brojevima, sa desne strane.
"ovo ce se ponoviti 2 puta " x 2 "a ovo 3 " x 3 4 x 12 #rezultat je 444444444444
25 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Postoji vise nacina kako mozemo reci Perl-u da nas obavestava ako nesto nije u redu. Prvi nacin je prilikom pokretanja naseg programa, ako u samom programu nismo aktivirali opciju za upozorenja.
$ perl -w neki_program
A ako hocemo da izbegnemo kucanje u terminalu, te da u samom programu aktiviramo upozorenja to mozemo uraditi kada u source-u pored shebang linije dopisemo sledece:
#!/usr/bin/perl -w
Neke novije verzije Perl-a koriste takozvane Pragme. Pragma za upozorenja se aktivira ovako:
#!/usr/bin/perl use warnings;
Upozorenja koja smo aktivirali dobro dodju programerima koji, manje vise, znaju sta rade. Ponekad se desi da su nam potrebna detaljnija objasnjenja, a tada koristimo Pragmu diagnostics.
#!/usr/bin/perl use diagnostics;
Pragma diagnostics zahteva nesto vise memorije, zato sto za vas unapred sprema duze objasnjenje ukoliko dodje do greske. Ukoliko ne zelite Pragmu diagnostics u svom programu, ipak je mozete koristiti prilikom pokretanja programa, ako vam nekad zatreba.
$ perl -Mdiagnostics ./neki_program
Da pojasnimo. Komanda "perl" sluzi da bi izvrsili neki_program, a "-Mdiagnostics" nam priprema dokumentaciju ako nesto ne valja - prilikom pokretanja programa iz terminala, tj. sa komandne linije.
26 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
zelite dodeliti neku vrednost promenljivoj, upotrebicete znak jednakosti, tj: "=". Bitno je znati da kada dodeljujete vrednost, prvo pisete promenljivu, zatim znak jednakosti, zatim vrednost promenljive sa desne strane. Znaci sablon izgleda ovako:
$neka_promenljiva = vrednost promenljive
Hajde da vidimo kako to izgleda u praksi. Koristicemo sledece promenjive da napisemo source programa, koga cemo nazvati "dodeljivanje.pl" i snimiti u "c:\Perl".
$ime = "Larry" $prezime = "Wall" $malo_duze_ime_promenljive = "Nekad moze biti korisno i ovako" $broj_neki = 34 $broj_veci = $broj_neki + 6
Binarno Dodeljivanje
Sazetak: U Perl-u se vodilo racuna o ustedi vremena. Dobre stvari iz drugih programskih jezika su i ovde nasle mesto.
27 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
manjeg broja komandi. Sto se operatora binarnog dodeljivanja tice, oni u pocetku mogu izgledati zagonetno, medjutim, sto vise prakse budete imali, sve cete biti zahvalniji sto postoje i takve "precice" prilikom pisanja programa. Ono sto sledi je primer dve razlicite komande, koje daju isti rezultat. Radi se o definisanju promenljivih:
$neki_broj = $neki_broj + 455; je isto sto i: $neki_broj += 455;
Naravno, sem sabiranja isti princip mozete primeniti na ostale osnovne matematicke operacije. Osim matematickih operacija, i kod sastavljanja znakovnih nizova imamo istu proceduru :
$neka_rec = $neka_rec . "pa ova recenica" je isto sto i : $neka_rec .= "pa ova recenica"
Rezultat je sledeci :
Prikazivanje Teksta
Sazetak: Prikazivanje teksta na monitoru i stampacu je stvar jednog "print"-a, i para dvostukih navodnika.
28 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Ovo ce vam se verovatno desiti ako se bavite sistem administracijom pa napisete mali program u Perl-u koji prebacuje fajlove, pravi arhivu, prati sistemsko zdravlje i desavanja na mrezama koje odrzavate. To sto vi u trenutku pisanja programa znate sta on radi, ne znaci da cete se i setiti posle godinu dana sta ste hteli da kazete. Iz tog razloga je potrebno da umecete u program bar opcije za osnovno izvestavanje. Ovde necemo uciti nikakve nove komande, jer se izvestavanje, tj. ispis poruka na ekran vrsi komandom kojom ste do sada dobro upoznati, a to je "print". Bitno je samo da zapamtite da ako vec pisete neki program, onda ga pisite tako da u svakom trenutku znate sta on radi. Naravno, ne treba preterivati, ali da li preterujete i ne znacete posle par stotina napisanih programcica :)
29 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Operatori Poredjenja
Sazetak: Rezultat poredjenja moze biti True ili False. Na vama je da odlucite sta cete posle.
30 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Poredjenje Operator Jednako eq - equal Vece gt - greater Manje lt - less then Vece ili Jednako ge - great or equal Manje ili Jednako le - less or equal Nije Jednako ne - not equal
Ulaz sa Tastature
Sazetak: Unos elemenata sa tastature je krajnje pojednostavljen, bar sto se Perl-a tice.
Korisnicki Unos
Stvari ce tek postati zanimljive kada naucite koristiti operator "<STDIN>". Upotreba operatora "<STDIN>" u Perl-u je veoma jednostavna. Svodi se na definisanje promenljive u koju se pomocu <STDIN>-a stavlja ono sto je krajnji korisnik otkucao preko tastature. Sta cete raditi sa tom promenljivom je vasa stvar. Ali, lepo je znati da je u Perl-u prihvatanje korisnickog unosa krajnje pojednostavljeno i logicno. Da vidimo kako se koristi Perl operator <STDIN> u praksi. Definisacemo promenljivu $neki_broj, tako da kada unesemo neki broj sa tastature, ako je broj manji od 5, program ce izbaciti poruku "manji od 5", a ako je broj veci, ili jednak 5, program ce reci "Perl je extra programski jezik." Koristicemo takodje upravljacku strukturu "if".
#!/usr/bin/perl #Snimite program kao unos.pl print "Unesite neki broj pa pritisnite ENTER\n"; $neki_broj = <STDIN>; if ($neki_broj < 5) { print "manji od 5"; } if ($neki_broj >= 5) { print "Perl je extra programski jezik"; }
Posle par pokretanja programa, i ukucavanje nekih brojeva, kod mene to izgleda ovako:
31 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Mozete slobodno da budete zadovoljni svojim dosadasnjim ucinkom ako su vam sve lekcije jasne, a trebalo bi da jesu jer sam ih maksimalno pojednostavio. U svakom slucaju, cak i da vam nesto nije jasno, nema problema. Sve ce doci na svoje mesto vremenom.
Operator Chomp
Sazetak: Ponekad je potrebno "odseci" oznaku za novi red kada unosimo podatke za obradu u programu, pa cemo koristi "chomp".
Kao sto vidite, Perl vam uvek ostavlja opciju da stedite dragoceno vreme. Jos nesto. Mozda imate utisak da operator chomp nije nesto narocito koristan, te da ne vidite gde bi ga mogli upotrebiti. Ostavite donosenje zakljucaka za kasnije. Videcete koliko je chomp koristan, samo se strpite malo.
32 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
vrsite upis u neku bazu podataka dok broj redova po tabeli ne predje odredjeni broj ...i mnogi drugi primeri. Ograniceni ste samo mastom. Ovo je samo mali deo onoga sto mozete uraditi uz pomoc while-a, koji treba da vam priblizi razloge za upotrebu te upravljacke strukture u vasim programima. Opet, zavisi od vas, mozda ce vam drugi operatori i komande mnogo vise koristiti. No, o tome cete vec vi odluciti u zavisnosti od toga sta vam bude trebalo i kako vise volite da pristupite programiranju. Sto se nekog jednostavnog programcica tice, hajde da na ekran stampamo neku rec onoliko puta koliko to navedemo u promenljivoj koju cemo nazvati "$odbrojavanje", a recenicu cemo uneti preko tastature.
#!/usr/bin/perl #Snimite program kao while.pl print "Napisite bilo koju recenicu pa pritisnite ENTER\n"; $recenica = <STDIN>; $odbrojavanje = 0; while ($odbrojavanje < 20) { $odbrojavanje = $odbrojavanje + 1; print $recenica; }
Funkcija defined
Sazetak: U odredjenom broju slucajeva, apsolutno morate znati sta je definisano, a sta ne. Koristite "defined", kod unosa parametara u program.
33 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
print "Unesite nesto preko tastature, pa pritisnite ENTER \n"; $vazna_promenljiva = <STDIN>; if ( defined($vazna_promenljiva) ) { print "promenljiva je definisana, uneto je $vazna_promenljiva"; } else { print "Program nece nastaviti izvrsavanje\n"; print "jer niste definisali promenljivu unosom preko tastature\n"; }
Liste u Perl-u
Sazetak: Ako imate kriterijum za odredjenu skupinu podataka, koristite specijalnu oznaku "@" za pravljenje liste.
Posto smo naucili kako davati imena listama, da vidimo kako definisati clanove liste:
@lista_brojeva = (3, 4, 5, 6, 7, 8, 9) @lista_imena = ("John", "Georg", "Michael", "Patrick") @lista_mesana = ("Nick", "Some Dude", 4323, 289)
34 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
"Iz prve liste 2 element\n"; @lista_brojeva[3]; "\n"; "Iz druge liste prvo ime\n"; @lista_imena[0];
Kao sto vidite, u programiranju, kada se govori o listama (tj. pozicijama) uvek "brojite" od nule. U realnom zivotu ne mozete nekom kusur vracati tako sto cete zanemariti prvu novcanicu koju dajete nekome (0-ulta, pocetna novcanica), ali u programiranju to ide tako. Bar kada se govori o pozicijama elemenata neke liste. Mozda jeste cudno, ali cete se naviknuti. Takodje, ne zamarajte se ovime, jednostavno stvari su takve kakve jesu i za sada odlicno funkcionisu. Ako bi ste pak zeleli da saznate zasto se u programiranju broji od nule u nekim slucajevima probajte sa unosom sledeceg stringa na vasoj omiljenoj trazilici: "Why do programmers count from zero ?"
Promenljive i Liste
Moze vam se desiti nekad da ce vam trebati neka promenljiva u listi. To nije nista cudno. Iz prethodnih lekcija smo naucili kako definisati promenljive, pa hajde da to primenimo.
$neka_promenljiva = 43 + 23; $jos_jedna_promenljiva = "John Smith";
Sada da napravimo listu u koju cemo ubaciti neke elemente, ali i gornje promenljive:
@kombinovana_lista = (1, 2, 3, $neka_promenljiva, $jos_jedna_promenljiva )
Opsezi i liste
Liste je moguce napraviti bez nesto preterano kucanja, na primer, mozete definisati gomilu brojeva na brzinu:
@lista_1 = (1..50); #svi brojevi izmedju 1 i 50 @lista_2 = (0, 1-5, 9, 10); #brojevi su 0, 1 do 5, 9 i 10 @lista_3 = ($a..$b); #opseg definisan pomocu promenljivih
35 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Precica qw
Sazetak: Kod pravljenja listi u Perl-u, stedite vreme koristeci "qw".
Da li vas je zamorilo kucanje navodnika? Ukoliko jeste, koristite precicu qw koja olaksava pravljenje liste. Ako bi prethodni primer zeleli napisati pomocu precice qw, to bi izgledalo ovako:
@imena = qw(John Mark Sebastian Vinona Smith)
Ako vam se desi, a verovatno hoce, da cete obicne zagrade upotrebiti za nesto drugo u programu, liste mozete definisati na brzinu i pomocu sledecih znakova : !, @, [, {, < . Ovo ce vam narocito koristiti kada budete radili obradu veceg broja tekstualnih fajlova ili web stranica. Sasvim je izvesno da ce vam i regular expression-si priskociti u pomoc :) Necu da vam ulepsavam. RegExp-i mogu da vas namuce u pocetku, ali se to kasnije i te kako isplati - od obrade teksta do izvlacenja onoga sto vam je potrebno iz baza podataka. Dakle, navedenu listu sa imenima mozemo napraviti i ovako:
@imena @imena @imena @imena @imena = = = = = qw[John qw{John qw!John qw qw#John Mark Sebastian Vinona Smith] Mark Sebastian Vinona Smith} Mark Sebastian Vinona Smith! Mark Sebastian Vinona Smith#
Operator pop
Sazetak: Operator "pop" koristicete kada "skidate" nesto sa kraja liste.
36 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Ako hocemo da uklonimo zadnji broj 10, ali i da ga prebacimo u neku promenljivu koju cemo kasnije negde iskoristiti , to ide ovako:
$zadnji = pop(@brojevi);
lista @brojevi sada je umanjena za jedan (zadnji) broj. Ako to ubacimo u neki programcic, imamo sledece:
#!/usr/bin/perl #snimite program kao pop.pl @brojevi = (1..10); print "osnovna lista sadrzi: " , @brojevi; $zadnji = pop(@brojevi); print print print print "\n"; "sa liste je skinut \"$zadnji\": \n"; "lista sada izgleda ovako: \n"; @brojevi;
Operator push
Sazetak: Operator "push" koristicete kod "stavljanja" nekog elementa na kraj liste.
37 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Kada pokrenete mali programcic push.pl, koji smo napisali, dobijete sledece :
38 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Operatori shift/unshift
Sazetak: Shift i Unshift se odnosi na operacije sa elementom na pocetku liste. Shift "uzima" element, unshift "stavlja" element na pocetak liste.
Recimo da nam treba za nesto izdvojen element "ime", a uzecemo ga sa pocetka liste.
$ime = shift(@imena);
Sada lista @imena sadrzi samo imena Michael i Nick, a element $ime je John. Jos jednom:
$ime = shift(@imena);
Sada lista @imena sadrzi ime Nick. Dosta oduzimanja sa pocetka liste. Hajde da neko ime i dodamo na pocetak.
unshift(@imena, "Patrick"); unshift(@imena, "Alex");
39 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
40 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Mozda naslucujete, mozda ne, ali mozete uraditi gomilu korisnih stvari sa upravljackom strukturom foreach. Ako vam nista ne pada na pamet, ili ako vam je Perl prvi programski jezik, logicno je da cete dobijati ideje malo kasnije. Da bi covek uspesno programirano, potrebno je da akumulira mnogo znanja o racunarima i operativnim sistemima generalno, a tek nakon uvida u mogucnosti programskih jezika, otvoricete sasvim novo polje u radu sa racunarima. Mogao bih se kladiti da cete biti zaprepasteni sta ce vam za izvesno vreme padati na pamet, kada se otisnete u svet pisanja programa za posebne namene :)
Podrazumevana Promenljiva: $_
Sazetak: Perl skracuje vreme za pisanje programa i cini program jednostavnijim upotrebom podrazumevane promenljive, oznake "$_".
Podrazumevano, a Korisno.
Secate se kada smo na pocetku ovog Perl kursa rekli da cete zavoleti programiranje ? Dame i gospodo, dobro dosli u lekciju o podrazumevanoj promenljivoj u Perl-u, cija je oznaka "$_", naravno, bez navodnika. Verovatno cete vremenom nekgde cuti ili procitati da su ljudi koji vole programirati u Perl-u posebna vrsta zverki. E pa, bili su u pravu. Postojanje podrazumevane promenjive $_ sluzi Perl programerima da skrati vreme za kucanje, a sasvim izvesno, i da nas oslobodi muka smisljanja naziva za razno-razne promenljive koje bismo inace morali definisati da programiramo u drugim programskim jezicima. Mozda cete se zapitati: "A kako to da smisljanje naziva za promenljive dosadi ?". Odgovor je veoma prost - probajte napisati neki veci program, od recimo 5000 redova koda, cak i sa komentarima. Sta mislite koliko ce vam se puta desiti da na vise mesta budete u iskusenju dati isto ime za neke slicne promenljive, gde
41 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
njihova slicnost, u realnosti, predstavlja apsolutnu razliku. To sto se vama nesto cini slicno, racunaru ne znaci nista. Racunar jednostavno ne zna da razmislja kao programer, i kada mu kazete da je nesto slicno necemu drugom, to za njega ne znaci nista. Za racunar je jedna promenljiva jedna, a ona druga potpuno drugacija, bez obzira sto im vi iz nekog razloga date slicna imena. Zapamtite, racunar i program koji pisete radi ono sto mu vi kazete. A to sto se vama neke stvari cine "slicnim", je sasvim vasa stvar :) No, da se vratimo promenljivoj "$_". Hajde da vidimo sta to "podrazumevana promenljiva" znaci na sledecem primeru. Prvo cemo napisati program sa nekom promenljivom, koju smo mi definisali, tj. dali joj ime, i dodelili neku vrednost. Neka to bude ulaz sa tastature:
#!/usr/bin/perl print "Unesite neki broj pa pritisnite ENTER\n"; $neki_broj = <STDIN>; if ($neki_broj < 5) { print "manji od 5"; } if ($neki_broj >= 5) { print "Perl je extra programski jezik"; }
Navedeni source je tacan, medjutim, mozemo ga i skratiti upotrebom podrazumevane promenljive, tako da ne lupamo glavu smisljanjem imena:
#!/usr/bin/perl print "Unesite neki broj pa pritisnite ENTER\n"; $_ = <STDIN>; if ($_ < 5) { print "manji od 5"; } if ($_ >= 5) { print "Perl je extra programski jezik"; }
Moguce je da vam se sada cini da source programa koji pisete polako pocinje da lici na neki spijunski kriptovan dokument. Mogu vam samo reci da to nije nista. Kada budete naucili jos posebnih oznaka u Perl-u postoji sansa da ce vas ostali programeri (koji rade u drugim jezicima) cudno gledati, tj. nece znati sta to uopste kuckate. Medjutim, vama ce to biti smesno, jer dok oni budu smisljali nazive za promenljive i lupali glavu gde su sta stavili u programu, vi cete sve to resavati mnogo brze. Jednostavno, bicete vise usredsredjeni na resavanje samog zadatka, a ne na programersku birokratiju :)
Operator reverse
Sazetak: Ponekad je potrebno da elemente jedne liste poredjamo "unatraske".
42 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Operator sort
Sazetak: Mozda ce nam zatrebati sortiranje elemenata liste po ASCII redosledu.
43 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
@dzungla = qw/ 1, 22, 45, #, %, John, john, Patrick, Nick, nick/; print @dzungla;
U principu, kod ASCII sredjivanja, velika slova su pre malih slova, a pre slova su brojevi, pre kojih su posebni znaci. Nema potrebe da se zamarate detaljno ASCII sredjivanjem, bitno je da znate da tako nesto postoji i da vam moze koristiti kod sredjivanja veceg broja elemenata liste.
44 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Ulaz sa tastature se moze posmatrati na vise nacina. Sada pricamo o "kontekstu liste".
Poenta price je da nakon svakog unesenog, ili procitanog reda, naredbom chomp ( u kontekstu liste ) uklanjate oznaku za kraj reda za svaki red/element koji ste uneli.
Potprogrami u Perl-u
Sazetak: Nas program mozemo pojednostaviti pisanjim manjih potprograma.
Podrutine po Potrebi
Perl raspolaze sirokom lepezom opcija i funkcija pomocu kojih mozete pisati komplikovane i ozbiljne programe. Isto tako, sledeci filozofiju ozbiljnih programskih jezika, moguce je da napisete i potprogram. Potprogrami u Perl-u pocinju sa oznakom "sub", sto na engleskom znaci "subroutine", tj. podrutina. Na primer, napisacemo mali potprogram koji svaki put kada se "pozove" u glavnom programu, stampa neki broj uvecan za 100.
#!/usr/bin/perl #Program snimite kao uvecavac.pl sub uvecavam { $broj = $broj + 100; print "Ovaj potprogram uvecava neki broj za 100, svaki put kad se pokrene >>> ", $broj; print "\n"; } #Da bi "pozvali" potprogram u glavnom programu koristite ampersand: "&". &uvecavam; &uvecavam; &uvecavam; &uvecavam; &uvecavam; &uvecavam;
45 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Moze se desiti da vam koncept potprograma nije jasan u pocetku. To je u redu, iz razloga sto ce vam ideja za pisanje potprograma doci onog trenutka kada vam se ucini da program koji pisete moze da se napise "citkije", tj. da se organizuje na takav nacin da odvojite neke delove programskog source-a kao posebne celine u kojima znate sta stoji, koje lako mozete promeniti, a da ne dirate ostatak programa.
Dodavanje Dinamike
U prethodnoj lekciji smo obradili Perl potprograme. Moze vam se uciniti da su potprogrami poprilicno "staticni", tj. da rade ono stovi prethodno definisete, i da se tu prica zavrsava. Tacno je da vase poptrograme mozete uciniti nefleksibilnim, iz nekog razloga, ali isto je tako moguce uciniti ih "aktivnim" prosledjivanjem argumenata. Niko nam ne brani da napisemo neki programcic koji uzima argumente preko standardnog ulaza, tj. tastature, potprogram uradi neku operaciju nad tim programima, a u nastavku programa prikazate rezultat tog programa, ili uradite nesto trece.
#!/usr/bin/perl print print print print print "##########################################################\n"; "\n"; "Program za izracunavanje aritmeticke sredine dva broja: \n"; "\n"; "##########################################################\n";
print "\n"; print "Unesite PRVI broj pa pritisnite ENTER\n"; $prvi_broj = <STDIN>; print "\n"; print "Unesite DRUGI broj pa pritisnite ENTER\n"; $drugi_broj = <STDIN>; sub sredina { $sredina = ( $prvi_broj + $drugi_broj ) / 2; }
46 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
print "Aritmeticku sredinu smo dobili iz potprograma \"sredina\".\n"; print "Aritmeticka Sredina iznosi: ", &sredina;
sub privatno { my ($ime, $prezime); print "Unesite neko Ime: "; $ime = <STDIN>; print "Ime iz potprograma je:", $ime; print "Unesite neko Prezime: "; $prezime = <STDIN>;
47 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
print "Prezime iz potprograma je:", $prezime; } print "\n"; print "Pokretanje potprograma...\n"; print "\n"; &privatno; print "\n"; print "Potprogram \"\&privatno\" je izvrsen uspesno.\n";
48 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Operator Return
Sazetak: Uz pomoc Operatora Return mozemo dobiti neku vrednost u potprogramu, i proslediti rezultat dalje, ako je to potrebno.
Ako sad pokrenete potprogram @sortiranje_liste, u nekom zamisljenom, vecem programu (return.pl):
#!/usr/bin/perl #Programcic snimite kao return.pl sub sortiranje_liste { @dzungla = qw/ 1, 22, 45, #, %, John, john, Patrick, Nick, nick/; @sortirano = sort(@dzungla); return @sortirano; } print "Napomena, da nismo stavili print ispred potprograma, ne bi videli njegov rezultat, ali bi on (potprogram) svejedno bio izvrsen.\n\n"; print &sortiranje_liste;
Unos Parametara
49 of 61 26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Sazetak: Koristite napredne opcije kod unosa parametara - ako vam to odgovara.
Kako mozemo biti sigurni da je nesto uopste uneto preko tastature. Prisetimo se lekcije o "while" i "defined".
while (defined($uneto = <STDIN>)) { print "Uneto preko tastature: $uneto \n"; print "Ovde ide neki vas source...\n"; }
50 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Kad smo vec kod onog znaka "^Z". To znaci da smo pritisnuli na tastaturi kombinaciju za prekid CTRL + Z. Bar sto se tice Windows sistema.
Pokretanje iz Terminala
Ako ste mislili da parametre za program mozete unositi samo u programu, kucajuci preko tastature, ili da su parametri direktno uneseni u source programa - varate se. Parametre vasem programu mozete "proslediti" preko tastature i pomocu operatora "dijamant". Unos preko dijamanta je specifican po tome sto unapred napravite svoj program da se pokrece sa komandne linije na takav nacin da se, nakon navodjenja imena programa, navedu i parametri (na istoj liniji), zatim se pritisne ENTER i program nakon toga krene sa izvrsavanjem. Dakle, bitno je napomenuti da ste vi inapred osmislili vas program da prima ulazne podatke preo komadne linije, sto cete cesto raditi na UNIX i slicnim sistemima, posto su oni jednostavno prirodno okruzenje za programiranje u Perl-u. Na UNIX sistemima program bi pokretali ovako:
$ ./vas_program parametar1 parametar2 parametar3
Naravno, imacete onoliko paramatara koliko vam treba da pokretanje programa a da ne bude preterano konfuzno. Ako imate mnogo parametara za unos u terminalu, bolje razmislite o tome da program nekako uprostite. To sto ste vi programer, ne znaci da obicni korisnici vaseg programa imaju razumevanja za cackanje po tastaturi vise nego sto smatraju za shodno... Korisnici su , generalno, cudna stvorenja..., pogotovo ako misle da to moze bolje. U tom slucaju im predlozite da nauce programiranje :) Da vidimo sad kako proslediti programu parametre u "terminalu" :
51 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
#!/usr/bin/perl # !!! Ovaj primer ce raditi na UNIX sistemima iz komandne linije, ne i na Windowsu is DOS prompt-a. while (<>) { chomp; print "Uneto je: $_ \n"; }
Bez obzira sto sam naveo da program nece raditi na Windows sistemima tako da prihvati ulaz preko DOS prompt-a, ipak ga pokrenite, cisto da vidite sta ce se desiti :)
Naredba printf
Sazetak: Ponekad je potrebno napraviti sablone za jasniji prikaz podataka.
Formatiranje Izvestaja
Naredba printf se koristi kada su nam potrebni takozvani sabloni za stampanje. Naredbi print prosledjujemo sablon a zatim i elemente kojim hoce omda oppunimo taj sablon. Bitno je samo da znate da za tekst upotrebljavate jedne oznake, za brojeve druge. Na primer, za tekst sablone cete koristiti oznaku "%s", bez navodnika :
printf "Ovde ubacujemo %s, ovde %s, a ovde %s.", "prvo", "drugo", "trece";
Sto se brojeva tice, postupak je slican. Umesto "%s", kod brojeva se najcesce koristi "%g", posto ce Perl pokusati predvideti kako ste zeleli da broj bude prikazan, u zavisnosti od eventualnih operacija nad brojevima:
printf "Prvi broj: $g, rezultat mnozenja: %g, veci broj: $g", 3, 5 x 6, 34 ** 25;
52 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Prosledjivanje iz Liste
Prosledjivanje elemenata iz liste naredbi printf se sastoji u pravljenju liste, definisanju formata sablona, i prosledjivanju elemenata:
my @lista = qw( Michael Nick John ); my $sablon = "Imena su: \n" . ("%20s\n" x @lista); printf $sablon, @lista;
53 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Identifikatori Datoteka
Sazetak: Identifikator datoteke je veza do datoteke.
Kako do Veze ?
Ne citajte ovu lekciju ukoliko niste procitali osnove identifikatora datoteka u Perl-u. Ukoliko jeste, da navedemo kako se prave identifikatori datoteka:
54 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
U prva dva slucaja, koristimo identifikator "LOG", kako bi procitali datoteke "danasnji" i "jucerasnji". U trecem slucaju, oznakom ">izvestaj", kreiramo datoteku izvestaj radi upisa podataka u nju pomocu identifikatora "NOVO". U cetvrtom slucaju, koristimo identifikator "PRIJAVA", kako bi dodali pomocu ">>" nove podatke u datoteku "kvarovi". Dakle, imamo vise identifikatora pomocu kojih citamo (<), pravimo novu (>), i dodajemo jos sadrzaja (>>) u neku datoteku. Na primer, zelimo da sadrzaj neke promenljive upisemo u datoteku "proba.txt":
#Mozete snimiti ovaj primer kao identifikatori.pl $izlaz = "proba.txt"; open UPIS, "> $izlaz"; print UPIS "test test test\n"; print UPIS "Ovo je upisano u datoteku proba.txt u c:\\Perl folderu\n";
I zaista, ako otvorite u DOS programu EDIT, ili u bilo kom editoru teksta fajl "proba.txt", koji se nalazi u folderu "c:\Perl", videcete sledece:
55 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Teorijski bi trebalo nakon svakog otvaranja i da zatvarate identifikator, mada ce vas Perl program perfektno raditi i bez toga. A ako se odlucite na zatvaranje identifikatora, onda to ne radite negde pred kraj programa, vec cim zavrsite sa operacijama nad datotekom.
Funkcija die
Sazetak: Funkcija "die" je korisnija nego sto se misli.
Moguce je da vam ovde dve stvari nisu jasne. Prva je ono "! open LOG". Taj uzvicnik u prevodu znaci : "ako ne moze". Znaci, "ako ne moze da se otvori identifikator LOG, tj. napravi fajl "izvestaj", onda neka se isprinta poruka o gresci. Druga stvar je ova oznaka "$!". Ta oznaka na kraju poruke o gresci sluzi tako da vas sistem dodatno obavesti o tome sta se desava, sem one poruke o gresci koju ste vi, vasim recima, definisali. U principu, tu oznaku treba odmah da navedete iza poruke koju ste vi definisali posle naredbe die, a ne nakon sto se jos neka operacije izvrsi u programu, pa dodje do eventualne konfuzije.
Funkcija warn
Sazetak: Funkcija "warn" vas obacvestava o gresci, ali ne stopira program.
56 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Hesevi: keys/values
Sazetak: Heseve koristite kada za jedan element obavezno imate vrednost ili opis.
Verovatno ste uocili da za kreiranje heseva koristimo oznaku za procenat "%". Prethodni hes smo mogli napisati i na jednoj liniji, na malo drugaciji nacin, ali mislim da ce vam to delovati malo "zbijeno":
%proizvodi = ( "Jabuke", 25, "Kruske", 44, "Breskve", 18 );
Ako vam prethodni primer izgleda previse "nabacano", kada ga pokrenete, probajte sa:
%proizvodi = ( "Jabuke" => 25, "Kruske" => 44, "Breskve" => 18, ); @artikli_kljuc = keys %proizvodi; @artikli_cene = values %proizvodi; foreach $produkt ( @artikli_kljuc) { print "Proizvod: ", $produkt; print "\n"; } print "\n"; foreach $cena ( @artikli_cene) { print "Cena: ", $cena;
57 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
print "\n"; }
Funkcija each
Sazetak: Funkcija "each" je korisna kod izvlacenje elemenata iz hesa radi lepseg prikaza, ako nista drugo.
Kljuc/Vrednost Listanje
Nemojte mesati funkciju each koju obradjujemo sada, sa ranijom lekcijom o funkciju foreach. Funkciju each koristite kod heseva kako bi od elemenata hesa napravili listu sa dva elementa. Prvi element ce biti kljuc (key), a drugi element liste ce biti vrednost (value). Listanje elemenata hesa po sistemu kljuc/vrednost ce se zavrsiti kada se dodje do kraja hesa. Primera radi, da iskoristimo hes sa proizvodima i cenama, iz lekcije o hesevima:
%proizvodi = ( "Jabuke" => 25, "Kruske" => 44, "Breskve" => 18, );
Ako hocemo proci brzo kroz hes, upotrebom funkcije each, upotrebljavacemo je u kombinaciji sa petljom while:
while ( ($produkt, $cena) = each %proizvodi ) { print "$produkt => $cena\n"; }
Rezultat je jasan:
58 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
Funkcija Delete
Sazetak: Funkcija delete je korisna i kod listi, i kod heseva.
Nakon toga automatski stampamo trenutno stanje liste. Kada sklopimo sve :
@imena = qw (Nick Michael John); print "@imena\n"; $obrisano = delete(@imena[1]); print "@imena\n"; print "Obrisali smo:", $obrisano;
59 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
60 of 61
26.12.2011 11:13
http://webpretraga.com/perl/perl-brzi-prirucnik/perl-tutorial.html
61 of 61
26.12.2011 11:13