|
Так же как и в других языках программирования, в перле можно работать с модулями. Модулем считается совокупность подпрограмм заключенных в один файл. Хотя в перле модули можно записать в один файл, это позволяет структурировать вашу программу. Так же это удобно когда программа становится очень большая, и её чтение становится затруднительным. Когда у вас есть подпрограммы, которые часто используются в разных программах, тогда можно использовать модуль как отдельный файл и экспортировать подпрограммы из него. |
Пример: |
|
package main; |
{ |
print "Hello!!!!!!!!"; |
} |
|
Давайте по подробнее рассмотрим этот пример. Здесь 'package' - идентификатор начала модуля, а 'main' - имя этого модуля, причем это имя зарезервировано и используется, как и название главного модуля, то есть если вы запустите скрипт, который состоит из одних модулей, то его выполнение начнётся именно с модуля main. |
Пример: |
|
package mod1; |
{ |
@array = ('hello','bay','hay'); |
sub proc1 |
{ |
print "@array \n"; |
} |
} |
package main; |
{ |
mod1::proc1; |
print "@mod1::array \n"; |
} |
|
Результат: |
|
hello bay hay |
hello bay hay |
|
Приведенный выше пример работает, если вы включили его в один файл. Так же есть ещё одно неудобство (по крайней мере, я не додумался, как это решить), модуль main надо описывать в самом конце файла, так как надо вперед описать другие модули. Вернемся к нашему примеру. Обратите внимание, как надо ссылаться на переменные и процедуры в другом модуле, здесь всё пишется как обычно, но к имени переменной в начало добавляется имя_модуля+'::'. |
|
Модуль можно так же определить и внутри другого модуля, всё делается точно также, только обращение к его содержимому выглядит так: |
|
имя_модуля::имя_подмодуля::переменные_или_продрограмма |
|
Пожалуй, наиболее полезным является создание библиотек - файлов с заключенными в них модулями. Имеются так же стандартные библиотеки, в unix они содержатся в каталоге /usr/lib/perl/, и имеют расширение 'pm'. Вы можете записать туда свою библиотеку и использовать её. Вернемся к созданию библиотек. Создайте файл с расширением pm и поместите его в указанный выше каталог. |
|
#-------------------------------------------------- |
# Главный файл можете поместить его куда хотите. |
#-------------------------------------------------- |
|
use mod1; # Подключение библиотеки mod1 |
mdo1::proc1; # Использование подпрограммы из модуля mod1 |
proc2; # Почему то подпрограммы можно писать без ссылки на модуль |
print "$mdo1::var1"; # Печать значения переменной и модуля |
#----------END_FILE-------------------------------- |
|
#-------------------------------------------------- |
# Собственно сама библиотека, с именем файла |
# mod1.pm, имя файла должно соответствовать |
# названию модуля. |
#-------------------------------------------------- |
|
package mdo1; |
require Exporter; # Нужна для экспорта перемененных и подпрограм |
@ISA = qw(Exporter); # |
@EXPORT = qw(proc1 proc2); # Экспорт процедур |
@EXPORT_OK = qw( $var1 ); # Экспорт переменных |
$var1 = 10; |
$var2 = 10; |
sub proc1 |
{ |
print "Hello!!!!!!!!!!"; |
} |
sub proc2 |
{ |
print "Привет!!!!!!!!"; |
} |
|
#------------END_FILE------------------------------ |
|
В этом примере модуль не ограничивается блоком, так как начало файла является началом модуля, а конец - концом. |