V Pel realizovan mehanizm modulej. Modul' eto gruppa
podprogramm i peremennyh obychno vklyuchennyh v odin fajl. Vnutri
odnogo modulya mozhno opredelit' drugoj modul'. Nachalo modulya
opredelyaetsya direktivoj:
packages imya_modulya;
Konec modulya eto konec bloka ili fajla. Golovnoj modul'
imeet po umolchaniyu imya main. Na imya vnutri modulya mozhno
ssylat'sya dobavlyaya '::' posle imeni modulya.
Naprimer:
$main::var1 - peremennaya v golovnom module.
::var1 - to zhe samoe. Imya main mozhno opuskat'.
$modul'1::var1 - peremennaya v module 'modul'1'
$modul'1::modul'2::var1 - Modul'2 soderzhitsya v module 1.
Tol'ko identifikatory nachinayushchiesya s bukvy ili simvola '_' hranyatsya
v prostrantsve imen tekushchego modulya. Ostal'nye hranyatsya v prostranstve
golovnogo modulya main.
Krome etogo imena STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC i SIG
tak zhe hranyatsya v golovnom module.
Vse imena modulya hranyatsya v associativnom massive (heshe) s imenem
modulya k kotoromu dobavleny simvoly "::". Takim obrazom imena
golovnogo modulya hranyatsya v %main:: , modulya 'mod1' v %mod1::
i t.d. Vyrazhenie vida *imya ukazyvaet znachenie elementa hesha 'imya'
eto udobno dlya opredeleniya konstant.
Naprimer:
*pi = \3.14159;
Zdes' peremennaya $pi - eto konstanta pi kotoruyu uzhe nel'zya izmenit'.
Konstruktory i destruktory.
Konstruktor - eto podprogramma kotoraya vypolnyaetsya v moment sozdaniya
ob®ekta, a destruktor - udaleniya ob®ekta. Dlya modulya eto podprogrammy
s imenami BEGIN i END. Pri opredelenii etih podprogramm slovo
sub mozhno opuskat'.
Konstruktor BEGIN vypolnyaetsya srazu kak tol'ko vozmozhno t.e. kak tol'ko
on opredelen dazhe ne zavershaya dal'nejshij razbor programmy. Mozhno ukazat'
neskol'ko blokov BEGIN. Oni budut vypolnyat'sya odin za drugim v poryadke
opredeleniya.
Destruktor END vypolnyaetsya poslednim kak tol'ko vozmozhno t.e. pri
zavershenii raboty interpreratora. Mozhno ukazat' nesol'ko blokov END
pri etom oni budut vypolnyat'sya v obratnom opredeleniyu poryadke.
V Pel net special'nogo sintaksisa dlya klassov. No funkcional'no
polnocennymi klassami mogut byt' moduli. Pri etom podprogrammy modulya
stanovyatsya metodami, a s pomoshch'yu massiva @ISA mozhno realizovat'
mehanizm nasledovaniya v klassah. Bolee podrobno klassy opisany otdel'no.
Esli vy hotoite sozdat' modul' otdel'nym fajlom i ispol'zovat'
kak biblioteku podprogramm, pri etom vyzyvat' podprogrammy biblioteki
ne ukazyvaya imeni modulya, vam neobhodimo oformit' modul' sleduyushchim
obrazom:
package imya_modulya; # Takoe zhe kak i imya etogo fajla bez rasshireniya '.pm'
require Exporter; # Obyazatel'naya stroka dlya eksporta imen
@ISA = qw(Exporter); # -//-
@EXPORT = qw(func1 func2) # Perechislyaem imena funkcij. Vnimanie ! net zapyatoj!
@EXPORT_OK = qw( $peremennaya @massiv ); # Ukazat' publichnye peremennye, massivy i t.d. esli neobhodimo
{ # Nachalo bloka modulya
.....
sub func1
........
sub func2
........
1;
}
Dannyj fajl s rasshireniem ".pm" dolzhen hranit'sya v odnoj iz bibliotechnyh
direktorij Pel. Oni perechisleny v massive @INC odno iz nih obychno
"/usr/local/lib/perl/".
V golovnoj programme vy ukazyvaete:
use imya_modulya;
i vam stanovyatsya dostupny imena podprogramm dannogo modulya.
Standartnye Pel biblioteki.
Standartnyj nabor bibliotek obychno postavlyaetsya s distributivom Pel
oni razdelyayutsya na pragma biblioteki (rabotayut kak direktivy kompilyatoru)
i standartnye biblioteki.
Pragma bibliototeki.
Dannye biblioteki ispol'zuyut kak:
use imya;
kogda hotyat vklyuchit' dejstvie i
no imya;
kogda vyklyuchit'.
V standartnyj nabor vhodyat sleduyushchie pragma:
diagnostics
Vklyuchit' rezhim rasshirennoj diagnostiki.
integer
Ispol'zovat' celochislennuyu arifmetiku.
less
Rezhim minimal'noj zagruzki kompilyatora.
overload
Rezhim pereopredeleniya operatorov.
sigtrap
Rezhim slezheniya za preryvaniyami.
strict
Rezhim ogranichennogo ispol'zovaniya "opasnyh" operatorov.
subs
Rezhim obyazatel'nogo deklarirovaniya podprogramm.
Standartnye biblioteki.
AnyDBM_File
Vozmozhnost' raboty s raznymi tipami baz dannyh.
AutoLoader
Zagruzka v pamyat' funkcij tol'ko vo vremya vyzova.
AutoSplit
Razdelit' modul' dlya avtozagruzki.
Benchmark
Analiz skorosti ispolneniya programmy.
Carp
Preduprezhdeniya ob oshibkah.
Config
Dostup k konfiguracii Pel.
Cwd
Poluchit' imya tekushchej rabochej direktorii.
DB_File
Rabota s bazoj dannyh formata Berkley DB.
Devel::SelfStubber
Rezhim otladki avtozagruzki.
DynaLoader
Dinamicheskaya zagruzka bibliotek C.
English
Ispol'zovat' dlinnye imena vstroennyh peremennyh.
Env
Importirovat' imena peremennyh okruzheniya
Exporter
Obespechivaet eksport/import dlya modulej.
ExtUtils::LibList
Opredelyaet ispol'zuemye biblioteki.
ExtUtils::MakeMaker
Sozdaet fajl proekta Makefile
ExtUtils::Manifest
Programmy dlya sozdaniya i proverki fajla MANIFEST
ExtUtils::Mkbootstrap
Primeneie fajla nachal'noj zagruzki dlya DynaLoader.
Fcntl
Opredeleniya kak i v S Fcntl.h
File::Basename
Sintaksicheskij razbor specifikacii fajla.
File::CheckTree
Bystryj prohod po direktoriyam diska.
File::Find
Bystryj poisk fajlov po direktoriyam.
FileHandle
Obespechivaet ob®ektnyj metod dostupa k ukazatelyam fajlov.
File::Path
Sozdanie/udalenie direktorij.
Getopt::Long
Rasshirennaya obrabotka opcij.
Getopt::Std
Standartnaya obrabotka opcij.
I18N::Collate
Sravnenie simvolov lokalbnoj kodirovki.
IPC::Open2
Mezhprocessornyj obmen po chteniyu i zapisi.
IPC::Open3
Mezhprocessornyj obmen po chteniyu, zapisi, i obraboki oshibok.
Net::Ping
Test dostupa k hostu.
POSIX
Standartnyj interfejs po IEEE Std 1003.1
SelfLoader
Zagruzka funkcij tol'ko po vyzovu.
Socket
Opredelenie struktur i konstant kak i v S socket.h
Test::Harness
Standartnyj test s statistikoj.
Text::Abbrev
Sozdanie tablicy sokrashchenij po spisku.
Podrobnoe opisanie kazhdoj biblioteki zapisano v samom fajle.
Programisty vsego mira rabotayushchie s Pel sozdali
obshchedostupnuyu biblioteku modulej CPAN. Ona dostupna cherez
Internet i soderzhit ogromnoe kolichestvo razlichnyh po naznacheniyu
modulej.
K nim otnosyatsya dokumentatory, sistemnye interfesy,
interfejsy raboty s bazami dannyh, rabota v seti, s fajlami,
Internet-brouzery, sistemy poiska, ogromnoe kolichestvo CGI
skriptov dlya Web serverov i mnogoe mnogoe drugoe. Spisok
nekotoryh CPAN serverov vy mozhete najti v prilozhenii.
Last-modified: Thu, 24 Apr 1997 17:58:32 GMT