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.