PERL5INC
- это переменная окружения shell , поэтому вы не устанавливаете ее внутри вашей Perl-программы (обычно), а вместо этого задаете ее перед вызовом Perl. Ниже приведена команда оболочки, где я использовал PERL5LIB
, чтобы указать prove
, чтобы найти модуль Perl, находящийся в ~/OnePop
:
$ PERL5LIB=~/OnePop prove -l t
... PERL5LIB is unset here ....
Когда команде предшествует присвоение переменной, подобное этому, оболочка устанавливает и экспортирует переменную (PERL5LIB
) для этой команды, но после этого переменная снова будет сброшена. Вы также можете установить переменную в оболочке, чтобы все последующие команды наследовали ее.
$ export PERL5LIB=~/OnePop
...
$ prove -l t
... PERL5LIB continues to be set here ...
Если вы забудете ключевое слово export
в вышеприведенном примере (т.е. присваиваете значение, используя PERL5LIB=~/OnePop
в отдельной строке), переменная будет установлена в оболочке , , но будет не будет наследоваться какими-либо командами, которые вы запускаете (это означает, что prove
не сможет его увидеть).
Наконец, если вы хотите установить переменную окружения PERL5LIB
изнутри Perl-программы, вам нужно написать ее так:
$ENV{PERL5LIB} = glob("~/OnePop"); # glob() expands the tilde
system(qw( prove -l t ));
Хотя, как уже указывали другие, если вы хотите указать путь включения изнутри Perl, проще / лучше использовать use lib $PATH
.