Įpraiškos
Perlas palaiko sudėtingą ir plačią įpraiškų sintaksę. Pilną jos aprašymą galima rasti perlrequick,
perlretut ir kituose dokumentacijos skyriuose. Tačiau trumpai:
Paprastas tikrinimas
if (/foo/) { ... } # 'true' jei $_ yra simbolių seka 'foo' if($a =~ /foo/) { ... } # 'true' jei $a yra simbolių seka 'foo'
Įpraiškų operatorius // aprašytas perlop dokumentacijoje. Jis pagal nutylėjimą įprašką
taiko kintamajam $_, tačiau tai galima pakeisti, pasinaudojus operatoriumi =~ (kurio
aprašymą irgi galima rasti perlop dokumentacijoje).
Paprastas pakeitimas
s/foo/bar/; # pakeičia 'foo' į 'bar' kintamajame $_ $a =~ s/foo/bar/; # pakeičia 'foo' į 'bar' kintamajame $a $a =~ s/foo/bar/g; # pakeičia VISUS 'foo' į 'bar' kintamajame $a
Pakeitimo operatorius s/// aprašytas perlop dokumentacijoje.
Sudėtingesnės įpraiškos
Įpraiškos nebūtinai sudaromos iš pastovių simbolių eilučių. Tiesą sakant, naudojantis sudėtingesnėmis
įpraiškomis galite aprašyti tokius šablonus, kokius tik sugalvosite. Pilnai tai aprašyta perlre
dokumentacijoje, o čia pateikiama tik trumpa lentelė:
. vienas bet koks simbolis \s tarpai, naujos eilutės ir tabuliacijos simboliai (whitespace) \S ne tarpai, ne neujos eilutės ir ne tabuliacija (non-whitespace) \d skaitmuo (0-9) \D ne skaitmuo \w žodžių simbolis (a-z, A-Z, 0-9 ir _) \W ne žodžių simbolis [aeiou] atitinka vieną simbolį iš duotos aibės [^aeiou] atitinka vieną simbolį ne iš duotosios aibės (foo|bar|baz) atitinka vieną iš alternatyvų ^ eilutės pradžia $ eilutės pabaiga
Taip pat galima nurodyti kiek kartų įpraiška turi atitikti prieš tai nurodytą išraišką, kur
„išraiška“ yra paprastas simbolis arba vienas iš metasimbolių nurodytų prieš šią pastraipą
esančioje lentelėje.
* nulį ar daugiau kartų + vieną ar daugiau kartų ? nulį arba vieną kartą {3} lygiai tris kartus {3,6} nuo trijų iki šešių kartų {3,} tris ar daugiau kartų
Keletas trumpų pavyzdžių:
/^\d+/ eilutė prasidedanti vienu ar daugiau skaitmenų /^$/ tuščia eilutė (po eilutės pradžios iš karto eina eilutės pabaiga) /(\d\s){3}/ trys skaitmenys atskirti tarpais ar tabuliacija (tarkim "3 4 5 ") /(a.)+/ eilutė, kurioje kiekviena neporinė raidė yra 'a' (pvz 'abacadaf') # Šis ciklas skaito iš STDIN ir spausdina netuščias eilutes: while (<>) { next if /^$/; print; }
Skliausteliai
Skliausteliai naudojami ne vien tik grupavimui – jie turi ir kitą paskirtį. Jie gali būti naudojami
įpraiškos rezultatų išsaugojimui. Rezultatai atsiduria kintamuosiuose $1, $2 ir taip
toliau.
# pigus ir ne visai tikslus būdas išskaidyti el.pašto adresą į dalis: if ($email =~ /([^@])+@(.+)/) { print "Vartotojo vardas: $1\n"; print "Domenas: $2\n"; }
Kitos įpraiškų galimybės
Perlo įpraiškos dar palaiko daugybę dalykų (backreferences, lookaheads ir t.t.) Apie visą tai
galima pasiskaityti perlrequick, perlretut ir perlre dokumentacijose.
Subrutinų rašymas
Labai lengva rašytis savo subrutinas:
sub log { my $pranesimas = shift; print LOGBYLA $pranesimas; }
Ką veikia tas shift? Na, subrutinai perduodami argumentai atsiranda masyve @_ (apie tai
daugiau perlvar dokumentacijoje). Jeigu shift neperduodami jokie argumentai, ši funkcija
naudoja masyvą @_. Tad my $pranesimas = shift; paima pirmą argumentų masyvo narį ir
priskiria jį kintamajam $pranesimas.
Su @_ galima elgtis ir kitaip:
my ($pranesimas, $svarbumas) = @_; # dažnas būdas my $pranesimas = $_[0]; # retas ir bjaurus būdas
Subrutinos gali ir grąžinti reikšmes:
sub kvadratas { my $skaicius = shift; my $rezultatas = $skaicius * $skaicius; return $rezultatas; }
Daugiau apie subrutinas perlsub dokumentacijoje
Objektinis Perlas
Objektinis Perlas yra ganėtinai paprastas. Objektai perle yra nuorodos, kurios magiškai žino kokį
objektą jos vaizduoja. Tačiau objektinis perlas neįeina į šį trumpą įvadą. Skaitykite perlboot,
perltoot, perltooc ir perlobj dokumentaciją.
Pradedantieji Perlo programuotojai dažniausiai su objektiniu programavimu susiduria tik naudodamiesi
Perlo moduliais.
Naudojimasis Perlo moduliais
Perlo moduliai leidžia jums neišradinėti dviračio, nes galima naudoti skodu, kuris jau kažkieno
parašytas. Modulius galima parsisiųsti iš http://www.cpan.org. Nemažai
modulių yra įdiegiami kartu su pačiu Perlu.
Moduliai CPAN svetainėje yra kategorizuoti. Yra daug įvairiausių kategorijų: nuo tekso apdorojimo iki
tinklo protokolų, nuo duomenų bazių iki grafikos.
Norint sužinoti kaip naudotis kuriuo nors moduliu, komandinėje eilutėje parašykite perldoc
Modulio::Pavadinimas. Kode dažniausiai jums reikės rašyti use Modulio::Pavadinimas – tai
įkraus moulį ir leis naudotis jo funkcijomis.
perlfaq dokumentacijoje yra dažnai užduodami klausimai ir atsakymai apie dažnai pasitaikančias
užduotis. Dažnai atsakymai siūlo naudotis vienu ar kitu moduliu.
perlmod dokumentacija bendrai aprašo Perlo modulius, perlmodlib dokumentacijoje yra sąrašas
modulių, kurie įdiegti kartu su Perlu.
Jeigu patys norite rašytis Perlo modulius, skaitykite perlnewmod dokumentaciją.
Tiesa, visą įvadą galima rasti http://lietuvoje.lt/~moxliukas/perlintro.html (ten dar keletas smulkių klaidų neištaisyta)
nelabai pagaunu kam tos subrutinos reikalingos?
subrutina — perliškai vadinama vartotojo aprašyta funkcija
moxliuk: nuostabus darbas, naujokams turetu but naudingas ir aiskus ;] gajla sau nieko naujo neradau ;(..