Чем использование local::lib отличается от использования lib?

Я не понимаю что use local::lib делает это регулярно use lib не делает. Может кто-нибудь объяснить это?

3 ответа

Решение

local::lib

  1. По умолчанию ~/perl5 если вы не указали каталог (пока use lib; это неоперация).

  2. Разрешает относительные пути к абсолютным путям перед добавлением их в @INC, (lib просто добавляет относительный путь как есть.)

  3. расширяет ~ а также ~user в имени каталога.

  4. Присоединяет /lib/perl5 в каталог, который вы укажете. (Так use local::lib '/foo'; несколько эквивалентно use lib '/foo/lib/perl5';.)

  5. Добавляет DIR/bin в ваш путь, так что вы можете использовать скрипты, установленные локальными модулями.

use lib добавляет каталог в путь поиска вашего модуля (@INC). Это не влияет ни на что, кроме программы или модуля, который содержит use lib директивы.

local::lib предназначен для включения каталога установки частного модуля, и, если вы сконфигурируете среду оболочки так, как она рекомендует, этот частный каталог будет использоваться для всех установок модуля Perl (будь то через CPAN или вручную). make install) и установленные там модули будут доступны для всех программ / модулей Perl, запущенных из вашего local::lib-защищенная оболочка среды.

Регулярное use lib foo почти так же просто, как:

BEGIN { unshift(@INC, foo) }

В то время как use local::lib устанавливает множество других переменных среды Perl, чтобы убедиться, что вы можете устанавливать модули локально, см. источник.

Другие вопросы по тегам