Perl csomagok és modulok
Mi csomagokat?
csomag kezelő kapcsolja a jelenlegi helyzetben a névadási névtér (szimbólum táblázatot). Így -
A csomag egy sor kód, amely él a saját névtérben.
Névtér egy sor nevű változót egyedi nevek (más néven egy szimbólum táblázatot).
Névtér változók megelőzése név ütközése csomagokat.
Csomagok teszi, hogy építsenek modulok, amelyek a használat során nem írja felül a változók és függvények kívül tulajdonneveket játszani modulokat.
Csomag érvényben marad, amíg egy másik csomagot kezelő nem fut, vagy addig, amíg a végén a jelenlegi blokk vagy fájlt.
Akkor kifejezetten utal a változók egy csomagot használ. megadó csomagot.
Az alábbiakban egy példát, amelynek fő és a Foo csomagokat a fájlt. Van egy speciális változó __PACKAGE__ használunk nyomtatni a csomag neve.
Ha a fenti kódvégrehajtáskor termel a következő eredményt -
Kezdődik és ér véget blokkok
Akkor tetszőleges számú blokkból, az úgynevezett elejét és végét, ami jár, mint konstruktorok és a destruktor, ill.
Minden BEGIN blokk végrehajtása után töltődik, és összeállított egy Perl script. de mielőtt bármilyen más szolgáltató.
Minden blokk végrehajtása azonnal vége előtt PERL tolmács kimenettel.
Kezdődnek és végződnek blokkok különösen hasznos, ha létre Perl modulok.
A következő példa azt mutatja, annak használatát -
Ha a fenti kódvégrehajtáskor termel a következő eredményt -
Mi Perl modulok?
Perl modul egy újrafelhasználható csomag határozza meg a könyvtár fájl, amelynek a neve ugyanaz, mint a csomag kiterjesztése .pm.
Perl modul nevű fájlt Foo.pm tartalmazhat olyan kijelentéseket.
Néhány fontos dolgot Perl modulok
Funkciója és használata megköveteli betölteni a modult.
Mindkettő egy listát a keresési út találni @INC értékét modult.
Mindkét funkció igényelnek, és használja hívja a eval feldolgozásra kódokat.
1; Az alsó Eval okokból. becsülni a valódi (és így nem fogy). (És így nem fogy). (És így nem fogy) származó (és így nem fogy).
igényelnek funkció
A modul tölthető keresztül igényel hívás funkciót az alábbiak szerint: -
Meg kellett volna észre, hogy a nevét, a rutinok teljesen meg kell adni, hogy hívja őket. Jó lenne. hogy tartalmazza a rutin és bár blat. hogy lesz behozni a saját névtér. ezért ne használja Foo. adja meg.
az
A modul lehet terhelni a hívást funkció használatára.
Felhívjuk figyelmét, hogy nem kell teljesen meg nevét csomag funkcióit. használja a funkciót exportálja a karaktereket a modul a néhány szolgáltató a modulban hozzá.
Ezt követően adja meg a fenti karakterekből (skalár, listák, hash függvények, stb.) Kitöltésével a változó listán megnevezett @EXPORT. Például -
Létrehozása Perl modul Fa
Ha készen áll, hogy küldje el a Perl modul, amely egy szabványos módja egy Perl modult fa. Ezt használja h2xs segédprogramot. Ez a segédprogram jön Alongwith Perl. Itt látható a szintaxis használatával h2xs -
Például, ha a modul áll rendelkezésre Person.pm fájlt egyszerűen futtassa a következő parancsot -
Ez a következő eredményt adja -
Itt van egy leírás a következő lehetőségek -
-A kód csökkenti autoloader (leghatékonyabb, ha a modulok, amelyek meghatározzák a nagyszámú ritkán használt szubrutinok). (Best által használt modulok, amelyek meghatározzák a nagyszámú ritkán használt alprogramok)
-X kihagyja XS elemek (Külső alprogram, ahol a külső eszközökkel külső Perl, azaz, a C) kapcsolatban (Külső alprogram, ahol a külső eszközökkel külső Perl, azaz, a C).
-N jelzi a modul nevét.
Így a fenti paranccsal a következő könyvtár struktúrát a személy. A tényleges eredmény fentebb látható.
Manifest alapján (tartalmazza az összes fájl jegyzékét a csomagban)
Library / (aktuális forráskód megy itt
Szóval Végül tar a könyvtár struktúrát Person.tar.gz fájlt. és elküldheti azt. Meg kell majd frissíteni a README fájlt utasításokat. Azt is néhány példát a teszt könyvtár fájl így.
Telepítése Perl modul
Letöltés Perl modul egy fájlban formában tar.gz. Használja a következő sorrendben. telepíteni semmilyen Perl Person.pm modult. amely betöltésre Person.tar.gz fájlt.
Perl értelmező tartalmaz egy listát a könyvtárakat. amelyben a modulokat (globális tömb @INC értékét).