Moduliai
Modulio apibrėžimas
- package pavadinimas
- aprašo, kad šioje vietoje prasideda modulis;
- modulio tekstas tęsis iki failo pabaigos arba kitos package direktyvos
(kuri pasirodys pirmiau)
- visi modulio kintamieji, funkcijos, masyvai, etc. gali būti pasiekiami naudojant
sintaksę modulio_pavadinimas::kintamasis_ar_funkcija.
- instrukcijos, kurios yra prieš bet kokio modulio pradžią priklauso spec.moduliui
main.
- BEGIN
- nurodo, kad šios funcijos kodą reikia įvykdyti kai tik jis yra sukompiliuojamas.
- modulis gali turėti keletą tokių funkcijų - tuo atveju jos bus vykdomos viena po
kitos apibrėžimo tvarka
- pvz.: BEGIN {print "Modulis XXXX įtrauktas\n";};
- END
- nurodo, kad šios funkcijos kodą reikia įvykdyti baigiant programos vykdymą;
- jei yra keletas tokiu funkcijų viename modulyje, tai pirmiausiai bus įvykdyta ta,
kuri yra anksčiausiai apibrėžta.
- pvz.:ls -l /tmp | perl -ane 'END {print $sum."\n";};$sum+= $F[4];'
- @EXPORT
- masyvas, kuris nusako, kokias modulio funkcijas ir kintamuosius reikia įtraukti į
naudojančio modulio simbolių kontekstą, jei įtraukiant nėra pasakyta kitaip;
- pvz.:@EXPORT=qw(kint1 func2);
- @EXPORT_OK
- masyvas, kuriame išvardintos visi modulio kintamieji ir funkcijos, kuriuos
įtraukiančiam moduliui leista pasiimti į savo simbolių kontekstą;
Modulių naudojimas
- do išraiška
- Naudoja išraiškos reikšmę kaip failo,
kuriame yra vykdytini operatoriai vardą.
- Failas nagrinėjamas kaskart, kai sutinkamas šis
operatorius.
- require išraiška
- informuoja perl'ą, kad programai
reikalingas dar vienas failas. Šiuo operatoriumi failai įtraukiami į programą tik 1
kartą viso vykdymo metu (nepriklausomai nuo to, kiek kartų bus vykdomas šis
operatorius). Įtraukiamas failas turi grąžinti reikšmę true.
- Jei
išraiška - paketo vardas - prie pavadinimo automatiškai pridedama
priesaga .pm (perl module) ir taip gaunamas failas, kuriame yra
modulis.
- Jei išraiška yra skaičius, tai ankstesnės, nei skaičiumi nurodytos versijos
perl'o interpretatorius generuos fatalinę klaidą.
- use Modulis [vardai]
- Įtraukia modulį į programą
- Kompiliavimo metu įvykdomos modulio BEGIN funkcijos; jų veiksmai gali
įtakoti tolesnį programos kompiliavimą!
- Į einamąjį simbolių kontekstą yra įtraukiami visi vardai, esantys modulio
@EXPORT masyve, jei use komandoje vardai nėra nurodyti;
- Į einamąjį simbolių kontekstą yra įtraukiami visi vardai, kurie yra nurodyti
use komandoje, jei jų pavadinimai yra modulio @EXPORT_OK masyve;
- Į einamąjį simbolių kontekstą nėra įtraukiami jokie vardai, jei use
komandoje vietoje vardų pateikiamas tuščias sąrašas ().
- -Mmodulis
- Komandinės eilutės raktas, nurodantis, kad prieš programos tekstą dar reikia
įtraukti nurodytą modulį
- @INC
- masyvas nurodo kuriuose kataloguose reikia ieškoti failų, įtraukinėjant modulį.
- skriptai gali keisti šio kintamojo reikšmė; po pakeitimo perl'as ieškos modulių
kataloguose, kurie yra @INC kinatamajame modulio įtraukimo metu
- papildomus katalogus galima priskirti naudojant
-I/katalogas komadinės eilutės raktą. Šie katalogai bus
įtraukti į sąrašo pradžią.
- &AUTOLOAD
- yra funkcija, kuri iškviečiama, jei modulyje nėra funkcijos, kuri yra kviečiama
- funkcijai &AUTOLOAD perduodami tie patys parametrai, kurie buvo
pateikti kreipinyje
- Kviestos funkcijos pavadinimas perduodamas spec.kintamajame
$AUTOLOAD
- bet kokį pėdsaką, kad buvo kviesta &AUTOLOAD funkcija galima
panaikinti kviečiant užkrautą arba sukurtą funkciją, naudojant sintaksę
goto funkcija
- %paketas::
- paketo simbolių lentelė. Raktai - paketo simboliai, reikšmės - nuorodos į
konkrečius objektus.
-