Вам нужно хотя бы знать, где был установлен local :: lib, и вы не сможете обойтись без этого, поэтому вам нужно объявить одну команду оболочки или переменную среды. Предполагая, что вы использовали значение по умолчанию для --bootstrap
, это минимальный пример bash для Perl для поиска библиотеки:
# persistent for this shell only
export PERL5LIB=$PERL5LIB:$(perl -MConfig -e'print "$ENV{HOME}/perl5/lib/perl5/$Config{archname}:$ENV{HOME}/perl5/lib/perl5"')
perl yourprog
perl yourprog
perl yourprog
или просто
# environment for one run of perl only
PERL5LIB=$PERL5LIB:$(perl -MConfig -e'print "$ENV{HOME}/perl5/lib/perl5/$Config{archname}:$ENV{HOME}/perl5/lib/perl5"') perl yourprog
Безопасно просто жестко закодировать имена каталогов и, таким образом, избежать eval и вызова perl.
use local::lib;
найдет и загрузит модуль из расширенного @INC
. Осмотрите %INC
, чтобы увидеть конкретное место, если вам это действительно нужно.
Предостережение: Вы не можете использовать local :: lib сейчас для установки дополнительных модулей, для которых нужны остальные объявления, сделанные в обычном eval, который он распечатывает.
Установка переменных среды изнутри с помощью трюка повторного выполнения, как показано ниже.
use autodie qw(:all);
unless ($ENV{REEXEC}) {
$ENV{REEXEC} = 1;
$ENV{PERL5LIB} = …
exec $^X, $0;
}
# main starts here