Perl Language                
            Пакеты и модули
        
        
            
    Поиск…
Синтаксис
- требуется Module :: Name; # Требовать по имени от @INC
- требуется «путь / в / файл.pm»; # Требовать относительный путь от @INC
- используйте Module :: Name; # require и импорт по умолчанию на BEGIN
- используйте Module :: Name (); # требуется и не импортировать в BEGIN
- используйте Module :: Name (@ARGS); # требуется и импортировать с помощью args в BEGIN
- use Module :: Name VERSION; # require, проверка версии и импорт по умолчанию в BEGIN
- используйте Module :: Name VERSION (); # require, проверка версии и отсутствие импорта в BEGIN
- используйте Module :: Name VERSION (@ARGS); # require, проверка версии, импорт с args в BEGIN
- do "path / to / file.pl"; # загрузить и eval данный файл
Выполнение содержимого другого файла
do './config.pl';
 Это прочитает содержимое файла config.pl и выполнит его. (См. Также: perldoc -f do .) 
 NB: Избегайте do если do не играете в гольф или что-то еще, поскольку проверка ошибок отсутствует. Для включения библиотеки модулей, использование require или use . 
Загрузка модуля во время выполнения
require Exporter;
 Это обеспечит загрузку модуля Exporter во время выполнения, если он еще не был импортирован. (См. Также: perldoc -f require .) 
 NB: Большинство пользователей должны use модули, а не require их. В отличие от use , require не вызывает метод импорта модуля и выполняется во время выполнения, а не во время компиляции. 
Этот способ загрузки модулей полезен, если вы не можете решить, какие модули вам нужны до запуска, например, с помощью системы плагинов:
package My::Module;
my @plugins = qw( One Two );
foreach my $plugin (@plugins) {
    my $module = __PACKAGE__ . "::Plugins::$plugin";
    $module =~ s!::!/!g;
    require "$module.pm";
}
 Это попытается загрузить My::Package::Plugins::One и My::Package::Plugins::Two . @plugins должен, конечно, поступать из некоторого пользовательского ввода или конфигурационного файла, чтобы это имело смысл. Обратите внимание на оператор подстановки s!::!/!g который заменяет каждую пару двоеточий косой чертой. Это связано с тем, что вы можете загружать модули с использованием синтаксиса знакомого имени модуля из use только если имя модуля является делом. Если вы передаете строку или переменную, она должна содержать имя файла. 
Использование модуля
use Cwd;
 Это будет импортировать модуль Cwd во время компиляции и импортировать его символы по умолчанию, то есть сделать некоторые из переменных и функций модуля доступными для кода, используя его. (См. Также: perldoc -f use .) 
Как правило, это будет правильно. Иногда, однако, вам нужно будет контролировать, какие символы импортированы. Добавьте список символов после имени модуля для экспорта:
use Cwd 'abs_path';
Если вы это сделаете, будут импортированы только указанные вами символы (т. Е. Набор по умолчанию не будет импортирован).
 При импорте нескольких символов идиоматично использовать конструкцию построения qw() : 
use Cwd qw(abs_path realpath);
 Некоторые модули экспортируют подмножество своих символов, но можно сказать, что они экспортируют все с помощью :all : 
use Benchmark ':all';
 (Обратите внимание, что не все модули распознают или используют тег :all ). 
Использование модуля внутри каталога
use lib 'includes';
use MySuperCoolModule;
 use lib 'includes'; добавляет относительный каталог, includes/ как другой путь поиска модуля в @INC . Предположим, что у вас есть файл модуля MySyperCoolModule.pm внутри includes/ , который содержит: 
package MySuperCoolModule;
 Если вы хотите, вы можете сгруппировать столько модулей из своего собственного внутри одного каталога и сделать их доступными с помощью одного оператора use lib . 
На этом этапе использование подпрограмм в модуле потребует префикса имени подпрограммы с именем пакета:
MySuperCoolModule::SuperCoolSub_1("Super Cool String");
Чтобы иметь возможность использовать подпрограммы без префикса, вам нужно экспортировать имена подпрограмм, чтобы они были распознаны программой, вызывающей их. Экспортирование может быть настроено так, чтобы быть автоматическим, таким образом:
package MySuperCoolModule;
use base 'Exporter';
our @EXPORT = ('SuperCoolSub_1', 'SuperCoolSub_2');
 Затем в файле, который use этот модуль, эти подпрограммы будут автоматически доступны: 
use MySuperCoolModule;
SuperCoolSub_1("Super Cool String");
Или вы можете настроить модуль для условного экспорта подпрограмм, таким образом:
package MySuperCoolModule;
use base 'Exporter';
our @EXPORT_OK = ('SuperCoolSub_1', 'SuperCoolSub_2');
 В этом случае вам нужно явно запросить нужные подпрограммы для экспорта в скрипт, который use модуль: 
use MySuperCoolModule 'SuperCoolSub_1';
SuperCoolSub_1("Super Cool String");
CPAN.pm
 CPAN.pm - это модуль Perl, который позволяет запрашивать и устанавливать модули с сайтов CPAN. 
Он поддерживает интерактивный режим, вызываемый с помощью
cpan
или же
perl -MCPAN -e shell
Запросы модулей
По имени:
cpan> m MooseX::YAML
Режимом по имени модуля:
cpan> m /^XML::/
 Примечание: для включения пейджера или перенаправления на файл используйте | или > перенаправление оболочки (пробелы являются обязательными в пределах | и > ), например: m /^XML::/ | less . 
По распределению:
cpan> d LMC/Net-Squid-Auth-Engine-0.04.tar.gz
Установка модулей
По имени:
cpan> install MooseX::YAML
По распределению:
cpan> install LMC/Net-Squid-Auth-Engine-0.04.tar.gz
Список всех установленных модулей
Из командной строки:
cpan -l
Из сценария Perl:
use ExtUtils::Installed;
my $inst = ExtUtils::Installed->new();
my @modules = $inst->modules();