lib
СОДЕРЖАНИЕ
ИМЯ
lib — манипулирование @INC во время компиляции
СИНТАКСИС
use lib LIST;
no lib LIST; ОПИСАНИЕ
Это небольшой простой модуль, который упрощает манипулирование @INC во время компиляции.
Он обычно используется для добавления дополнительных каталогов в путь поиска Perl, чтобы последующие use или require инструкции находили модули, которые не находятся в стандартном пути поиска Perl.
Добавление каталогов в @INC
Параметры к use lib добавляются в начало пути поиска Perl. Утверждение
use lib LIST; почти эквивалентно утверждению
BEGIN { unshift(@INC, LIST) } Для каждого каталога в списке (называемого $dir) модуль lib также проверяет, существует ли каталог $dir/$archname/auto. Если да, то каталог $dir/$archname считается соответствующим каталогом для архитектуры и добавляется в @INC перед $dir. lib.pm также проверяет, существуют ли каталоги $dir/$version и $dir/$version/$archname и добавляет их в @INC.
Текущее значение $archname можно найти с помощью этой команды:
perl -V:archname Соответствующая команда для получения текущего значения $version:
perl -V:version Для предотвращения утечек памяти, все повторяющиеся записи в конце @INC удаляются.
Удаление каталогов из @INC
Обычно вы должны только добавлять каталоги в @INC. Если вам нужно удалить каталоги из @INC, позаботьтесь о том, чтобы удалять только те, которые вы добавили сами, или те, о которых вы уверены, что они не нужны другим модулям в вашем скрипте. Другие модули могут добавить каталоги, которые им необходимы для правильной работы.
Инструкция no lib удаляет все экземпляры каждого указанного каталога из @INC.
Для каждого каталога в списке (называемого $dir) модуль lib также проверяет, существует ли каталог $dir/$archname/auto. Если да, то каталог $dir/$archname считается соответствующим каталогом для архитектуры и также удаляется из @INC. lib.pm также проверяет, существуют ли каталоги $dir/$version и $dir/$version/$archname, и удаляет их из @INC.
Восстановление исходного @INC
При первой загрузке модуля lib он записывает текущее значение @INC в массив @lib::ORIG_INC. Для восстановления @INC до этого значения можно использовать:
@INC = @lib::ORIG_INC; ОГРАНИЧЕНИЯ
Для того чтобы lib.pm оставался небольшим и простым, он работает только с путями файлов Unix. Это не означает, что он работает только в Unix, но пользователям, не использующим Unix, необходимо предварительно преобразовать пути к файлам в соглашения Unix.
# VMS users wanting to put [.stuff.moo] into
# their @INC would write
use lib 'stuff/moo'; ПРИМЕЧАНИЯ
В будущем этот модуль, вероятно, будет использовать File::Spec для определения путей, как это уже делается для Mac OS (где пути в стиле Unix или Mac работают, а пути в стиле Unix должным образом преобразуются в пути в стиле Mac перед добавлением в @INC).
Если вы попытаетесь добавить файл в @INC следующим образом:
use lib 'this_is_a_file.txt'; lib выведет предупреждение об этом. Единственными исключениями являются файлы с расширением .par, которые предназначены для использования в качестве библиотек.
СМОТРИТЕ ТАКЖЕ
FindBin — необязательный модуль, который обрабатывает пути, относительные к исходному файлу.
PAR — необязательный модуль, который может обрабатывать файлы .par как Perl-библиотеки.
АВТОР
Tim Bunce, 2 июня 1995 года.
lib поддерживается командой perl5-porters. Пожалуйста, направляйте любые вопросы на соответствующий список рассылки. Однако, все, что относится к релизу CPAN, можно направлять его разработчику.
Разработчик: The Perl5-Porters <perl5-porters@perl.org>
Разработчик выпуска CPAN: Steffen Mueller <smueller@cpan.org>
АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ
Этот пакет был частью ядра Perl с момента выпуска perl 5.001. Он был выпущен отдельно в CPAN, чтобы более старые установки могли воспользоваться исправлениями ошибок.
Этот пакет имеет те же авторские права и лицензию, что и ядро Perl.
© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.36.0/lib