Пример:
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------------------------------В этом примере модуль не ограничивается блоком, так как начало файла является началом модуля, а конец - концом.