Чем использование local::lib отличается от использования lib?
Я не понимаю что use local::lib
делает это регулярно use lib
не делает. Может кто-нибудь объяснить это?
3 ответа
local::lib
По умолчанию
~/perl5
если вы не указали каталог (покаuse lib;
это неоперация).Разрешает относительные пути к абсолютным путям перед добавлением их в
@INC
, (lib
просто добавляет относительный путь как есть.)расширяет
~
а также~user
в имени каталога.Присоединяет
/lib/perl5
в каталог, который вы укажете. (Такuse local::lib '/foo';
несколько эквивалентноuse lib '/foo/lib/perl5';
.)Добавляет
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, чтобы убедиться, что вы можете устанавливать модули локально, см. источник.