Jezik za servere |
Vladimir Marić |
Prema nekim podacima, najviše CGI skriptova na celom Internetu razvijeno je u Perlu - široj javnosti slabo poznatom programskom jeziku. Popularnost takvih razmera ne dolazi slučajno... |
Perl se ne uči u školama, zbog njega ne zasedaju komiteti za standarde, pa on nikada neće izmeniti programiranje kakvo danas poznajemo. Za sve to postoje neki drugi jezici; Perl će vam ponuditi "samo" mogućnost da brzo i efikasno završite posao.
Šta je Perl
Perl je, strogo govoreći, interpretirani jezik opšte namene, (izuzetno) visokog nivoa. Koristi se uglavnom za izdvajanje i obradu podataka iz tekstualnih datoteka, formatiranje i ispis rezultata tih operacija. Kako se dobar deo administriranja Unix računara svodi upravo na takve zadatke, Perl je lako našao svoje mesto pod Suncem. Pravi prodor, međutim, doživeo je tek sa popularizacijom HTML-a i Web-a. Obrada podataka i njihov formatiran ispis je sama suština dinamičkog kreiranja HTML stranica, a za te oblasti Perl spada u vodeće alate.
Kratko, kraće...U Perl-u je mnogi klasični zadaci rešavaju sa vrlo malo linija koda, a gotovo sve stvari mogu se uraditi na više načina. Uzmimo za primer ispis sadržaja datoteke na ekran. C programer bi u Perl-u napisao ovakav program:
|
Istorija
Perl je relativno mlad jezik, nastao iz potrebe da se konkretni zadaci realizuju na što jednostavniji i što lakši način. Njegov tvorac, Larry Wall (lwall@sems.com), po profesiji Unix sistem programer, je 1986. godine za potrebe projekta na kojem je tada radio razvio skript jezik koji kombinuje mogućnosti klasičnih Unix alata u kompaktnu celinu. U početku se jezik zvao Gloria, po autorovoj supruzi, ali je zbog izvesne zabune koji je ovo ime izazivalo ("trenutno radim na Gloriji"), jezik je preimenovan u Pearl; vremenom je suvišno slovo nestalo, a jezik je dobio svoj konačni naziv - Perl. Kada se ime ustalilo, lako je smišljen i naziv čija je Perl tobožnja skraćenica - Practical Extraction and Report Language.
Bez ambicija da proširi vidike i postavi nove standarde u programiranju, Perl je građen prema sledećim uzorima: grep/awk, baterija programa za pretraživanje i selekciju podataka iz datoteka, sh komandni jezik (Unix shell), sed (streaming editor za obradu teksta) i C, kao osnovni programski jezik u tom okruženju.
Kako je popularnost jezika rasla, u razvoju Perl-a učestvovalo je sve više ljudi, i a mogućnosti su postajale sve veće. U danas aktuelnoj verziji 5 Perl donosi module i mogućnost objektno orijentisanog programiranja, ali i dalje ostaje jednostavan i kompaktan skript jezik. Umesto dodavanja novih ključnih reči i operatora, čime bi jezik postao glomazniji i teži za učenje, osnova jezika postajala je sve rafinisanija, tako da je u verziji 5 broj ključnih reči smanjen (!) u odnosu na verziju 4 za oko 30%.
Za i protiv
Paradoksalno, nekoliko glavnih osobina Perl-a mogu se posmatrati i kao činjenice koje mu idu u korist, ali i kao velike mane. Pre svega, jezik je interpretiran, što ga čini unekoliko jednostavnijim za razvoj. "Opuštena" tipizacija promenljivih, ako o nekoj tipizaciji uopšte može biti reči, dozvoljava ekspresna rešenja o kojima C programeri mogu samo da sanjaju. Sa druge strane, slaba tipizacija je nepresušan izvor grešaka, a ako vam distribuiranje programa u vidu izvornog koda nije prihvatljivo, nalazite se pred (skoro) nerešivim problemom.
Kako nabaviti PerlUnix računar bez instaliranog Perl-a je prava retkost; ako imate nalog na nekom, gotovo je sigurno da imate pristup Perl-u, pa odmah možete da krenete u eksperimentisanje. Pravo mesto za pronalaženje Perl interpretera, raznih dodataka i svega ostalog vezanog za ovaj jezik je Central Perl Archive Network (CPAN). Glavni server CPAN-a je ftp://ftp.funet.fi/pub/languages/perl/CPAN/, a postoje i brojni mirror serveri širom sveta. Perl postoji u verzijama za sve platforme koje nešto znače u računarskom svetu; glavni mrežni i PC operativni sistemi se podrazumevaju. |
Pre svega, praktično
Perl program je običan tekst fajl, koji sadrži niz naredbi. Nenaviknutom oku niz Perl naredbi izgleda kao čudna mešavina C-a, Unix shell skripta, i engleskog jezika (što, u stvari, i jeste). Osnovna sintaksna pravila jezika su jednostavna: komande se razdvajaju tačkom i zarezom; tzv. beli razmaci van literala (ključne reči, nazivi funkcija, promenljivih i ostalih objekata, stringovi) se ignorišu, što znači da program može imati proizvoljnu vizuelnu strukturu; tekst iza znaka # se smatra za komentar i zanemaruje se.
Postoji nekoliko načina za izvršavanje Perl programa. Pre svega, možemo direktno pozvati interpreter navodeći ime programa, dakle perl hello.pl. Na Unix računarima u prvom redu datoteke može da se zada ime interpretera koji izvršava skript, pa se kasnije prostim startovanjem datoteke interpreter automatski poziva i pokreće program (ne zaboravite da dozvolite izvršavanje datoteke, komandom chmod +x hello.pl). Linija koju treba dodati na početak programa glasi
#!/usr/bin/perl
Promenljive
U Perl-u postoje dva osnovna tipa promenljivih - skalari i nizovi. Skalarna promenljiva može da sadrži integer, broj u pokretnom zarezu ili string. Na koji način će promenljiva biti protumačena zavisi samo od konteksta u kom nalazi prilikom evaluacije izraza - promenljiva koja, na primer, sadrži vrednost 100 može u jednoj naredbi učestvovati u aritmetičkim operacijama kao ceo broj, a već u sledećoj biti kao upoređivana sa drugim stringom.
Nazivi skalarnih promenljivih uvek počinju znakom $, recimo $mesec=5; ili $mesec="Maj";. String promenljive počinju znakom @, na primer:
@prosti=(2, "tri", 5, "sedam");
print "$prosti[2]\n";
print "@prosti\n";
$duzina=@prosti;
print $duzina;
@prolece=("mart", "april", "maj");
@leto=("jun", 7, "avgust");
@pola_godine=(@prolece, @leto);
%ext=('txt' =>> 'Tekst datoteka',
'exe' =>> 'Izvršni program',
'zip' =>> 'ZIP arhiva');
$ext{'doc'}="MS Word dokument";
print $ext{'zip'};
Operatori
Budući da je nastao po ugledu (i) na C, Perl poseduje celokupnu bateriju aritmetičkih i logičkih operatora iz ovog jezika. Naredbe dodele ($a=$b, $a+=$b itd) su takođe prenete iz C-a; tu je čak i trinarni operator ?. Dodatni aritmetički operator je stepenovanje ($stepen = $a**$b), a novi logički operator je poređenje: $c = $a<<=>>$b vraća 1 ako je $a>>$b, 0 ako je $a==$b odnosno -1 ako je $a<<$b.
Uvedena je i cela grupa logičkih operatora za poređenje stringova (eq testira jednakost stringova, ne nejednakost, gt da li je prvi string veći itd). Poseban kuriozitet je operator x: print "=" x 40; će štampati liniju od četrdeset znakova =. Tu su još operator poređenja stringova cmp, koji se ponaša kao <<=>> kod brojeva i operator . (tačka), koji spaja stringove, npr. $puno_ime=$ime." ".$prezime.
Kontrola toka i kodni blokovi
Osnovna upotreba logičkih operatora u skript jeziku je ispitivanje nekih uslova radi grananja u programu. Umesto minimalnosti i "lepote", kojima teži većina modernih programskih jezika, Perl sadrži (autoru ovog teksta se čini) sve čoveku poznate kontrolne strukture - pored klasičnog if - else ispitivanja uslova, i for, while i do-while petlji, tu su još unless ispitivanje uslova (suprotno od if), zatim until i do-until petlje, i još mnogo toga... sve što će vam ikad zatrebati. Neke od kontrolnih struktura vode poreklo iz Unix shell skripta, kao konstrukcija foreach:
foreach $mesec (@prolece, @leto, @jesen, @zima) {
print "U mesecu $mesec se treba što više odmarati!\n" }
$len=@prosti;
for($i=0; $i<<$len; $i++) {
print "$prosti[$i], "; }
print "Broj je negativan!" if $broj<<0;
open(handle, "file.ext") || print "Greška u otvaranju datoteke!";
close(handle) && print "Datoteka uspešno zatvorena.";
U sledećem broju...
U sledećem nastavku priče o Perl-u posvetićemo pažnju operacijama sa nizovima, važnom aspektu ovog programskog jezika. Perl obiluje promenljivama specijalne namene, na koje ćemo se takođe osvrnuti. Rad sa datotekama je takođe nezaobilazna tema... a Perl je jezik koji vredi naučiti.
|