Каждый пакет в Perl имеет отдельную таблицу символов, а синтаксис определения следующий:
пакет mypack;
Этот оператор определяет пакет с именем mypack . Имена всех переменных и подпрограмм, определенных после этого, сохраняются в таблице символов, связанной с пакетом, до тех пор, пока не встретится другой оператор пакета .
Каждая таблица символов имеет свой собственный набор имен переменных и подпрограмм. Каждый набор имен не связан между собой, поэтому одно и то же имя переменной может использоваться в разных пакетах для представления разных переменных.
Чтобы получить доступ к переменным другого пакета из одного пакета, вы можете указать его с помощью «имя пакета + двойное двоеточие (::) + имя переменной».
Таблица символов по умолчанию, в которой хранятся имена переменных и подпрограмм, связана с пакетом с именем main . Если в программе определены другие пакеты и вы хотите вернуться к использованию таблицы символов по умолчанию, вы можете повторно указать основной пакет:пакет основной;
Таким образом, следующая программа будет действовать так, как будто пакет никогда не был определен, а имена переменных и подпрограмм сохраняются как обычно.
Файлы в следующем примере — это пакеты main и Foo. Специальная переменная __PACKAGE__ используется для вывода имени пакета:
Результат выполнения вышеуказанной программы:
Имя пакета: main 1 Имя пакета: Foo 10 Имя пакета: main 100 Имя пакета: main 10
Язык Perl предоставляет два ключевых слова: BEGIN и END. Каждый из них может содержать набор сценариев для выполнения до или после запуска тела программы.
Формат синтаксиса следующий:
НАЧАЛО { ... } КОНЕЦ { ... } НАЧАЛО { ... } КОНЕЦ { ... }
Каждый модуль BEGIN выполняется после загрузки и компиляции сценария Perl, но до выполнения других операторов.
Каждый блок инструкций END выполняется перед выходом интерпретатора.
Блоки операторов BEGIN и END особенно полезны при создании модулей Perl.
Если вы все еще не поняли, мы можем рассмотреть пример:
Результат выполнения вышеуказанной программы:
Это блок операторов BEGIN. Экземпляры Begin и Block. Это блок операторов END.
В Perl5 пакеты Perl используются для создания модулей.
Модуль Perl — это повторно используемый пакет. Имя модуля совпадает с именем пакета, а суффикс определенного файла — .pm .
Ниже мы определяем модуль Foo.pm, код следующий:
Есть несколько замечаний относительно модулей Perl:
Функции require и use загрузят модуль.
@INC — это специальный массив, встроенный в Perl, который содержит путь к каталогу, в котором находятся библиотечные подпрограммы.
Функции require и use вызывают функцию eval для выполнения кода.
1 в конце выполнение возвращает TRUE, что является обязательным, в противном случае возвращается ошибка.
Модули можно вызывать через функцию require , как показано ниже:
На него также можно ссылаться через функцию use:
Мы заметили, что ссылка require должна использовать имя пакета для указания функции, а ссылка use — нет. Основное различие между ними заключается в следующем:
1. require используется для загрузки модуля или программы Perl (суффикс .pm можно опустить, но .pl должен присутствовать)
2. Оператор использования Perl вводится во время компиляции, а требование — во время выполнения.
3. Когда использование Perl вводит модуль, оно также вводит подмодуль модуля. Однако require не может быть введен и должен быть переобъявлен.
4. Поиск USE осуществляется в текущем @INC по умолчанию. Если модуль отсутствует в @INC, его нельзя ввести с помощью USE, но требуется указать путь.
5. Когда USE ссылается на модуль, если имя модуля содержит двойное двоеточие ::, двойное двоеточие будет использоваться в качестве разделителя пути, что эквивалентно / в Unix или в Windows. нравиться:
используйте MyDirectory::MyModule
Символы списка можно экспортировать из модуля использования, добавив следующий оператор:
требуется Экспортер;@ISA = qw(Экспортер);
Массив @EXPORT содержит имена переменных и функций, экспортируемых по умолчанию:
package Module;require Exporter;@ISA = qw(Exporter);@EXPORT = qw(bar blat); #Экспортируемые символы по умолчанию sub bar { print "Hello $_[0]n" }sub blat { print "World $ _ [0]n" }sub splat { print "Not $_[0]n" } # Не экспортировано!1;
Модуль Perl легко создать с помощью инструмента h2xs, который входит в состав дистрибутива Perl.
Вы можете ввести h2xs в режиме командной строки, чтобы просмотреть список его параметров.
Формат синтаксиса h2xs:
$ h2xs -AX -n ИмяМодуля
Описание параметра:
-A игнорирует механизм автозагрузки
-X игнорировать элементы XS
-n указывает имя модуля расширения
Например, если ваш модуль находится в файле Person.pm , используйте следующую команду:
$ h2xs -AX -n Человек
Выполнение вышеуказанной программы выведет:
Написание Person/lib/Person.pmWriting Person/Makefile.PLWriting Person/READMEWriting Person/t/Person.tWriting Person/ChangesWriting Person/MANIFEST
В каталоге Person вы можете увидеть недавно добавленные каталоги и описания файлов:
README: этот файл содержит некоторую информацию об установке, зависимостях модулей, информацию об авторских правах и т. д.
Изменения: этот файл служит файлом журнала изменений для вашего проекта.
Makefile.PL: это стандартный конструктор Perl Makefile. Используется для создания файла Makefile.PL для компиляции модуля.
МАНИФЕСТ: Этот файл используется для автоматического построения распространения версии модуля типа tar.gz. Таким образом, вы можете перенести свой модуль на CPAN и опубликовать его или распространить среди других. Он содержит список всех файлов, которые есть в этом проекте.
Person.pm: это основной файл модуля, содержащий код обработчика mod_perl.
Person.t: Несколько тестовых сценариев для этого модуля. По умолчанию он просто проверяет загрузку модулей, вы можете добавить несколько новых тестовых модулей.
т/: тестовый файл
lib/: каталог, в котором хранится фактический исходный код
Вы можете использовать команду tar (в Linux), чтобы упаковать указанный выше каталог в Person.tar.gz.
Мы можем распаковать и установить только что сжатый файл Person.tar.gz . Шаги следующие:
tar xvfz Person.tar.gzcd Установка Personperl Makefile.PLmakemake
Сначала запустите «perl Makefile.PL», чтобы сгенерировать Makefile в текущем каталоге;
Затем запустите make, чтобы скомпилировать и создать необходимые файлы библиотеки;
Затем используйте make test, чтобы проверить правильность результата компиляции; наконец, запустите make install, чтобы установить файл библиотеки в системный каталог, и весь процесс компиляции завершится.