Spec-Zone.ru › Perl 5.38

lib

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • СИНТАКСИС
  • ОПИСАНИЕ
    • Добавление каталогов в @INC
    • Удаление каталогов из @INC
    • Восстановление исходного @INC
  • ЗАМЕЧАНИЯ
  • ПРИМЕЧАНИЯ
  • СМОТРИТЕ ТАКЖЕ
  • АВТОР
  • АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ

НАЗВАНИЕ

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-библиотеки.

АВТОР

Тим Бэнс, 2 июня 1995 года.

lib поддерживается perl5-porters. Пожалуйста, направляйте любые вопросы на соответствующий список рассылки. Однако любые вопросы, относящиеся к выпуску CPAN, можно отправлять его разработчику.

Разработчик: Perl5-Porters <perl5-porters@perl.org>

Разработчик выпуска CPAN: Steffen Mueller <smueller@cpan.org>

АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ

Этот пакет был частью ядра Perl с момента Perl 5.001. Он был выпущен отдельно в CPAN, чтобы старые установки могли воспользоваться исправлениями ошибок.

Этот пакет имеет те же авторские права и лицензию, что и ядро Perl.

© 1993–2023 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.38.0/lib

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API