我正在尝试使用
$PERL5LIB
将目录添加到我的 @INC 数组。我正在使用 tcsh shell 并将以下命令添加到我的 .cshrc 脚本中
set PERL5LIB = /home/user/perl5/lib/perl5
这似乎一直有效,直到
$echo $PERL5LIB
显示添加到 $PERL5LIB
变量的路径。但运行脚本仍然给我同样的错误:
Can't locate Spreadsheet/ParseExcel.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at regs_gen.pl line 55. BEGIN failed--compilation aborted at regs_gen.pl line 55.
显然
$PERL5LIB
没有附加到 @INC 数组中。我已经能够使用 Perl 的 -I 命令行参数运行我的脚本,如下所示,但我正在寻找更方便的解决方案。
perl -I /home/user/perl5/lib/perl5 scriptname.pl
任何帮助表示赞赏!
perl-V
大写字母“-V”看起来就像你的朋友在 perlrun 中记录的那样。
其尾随行包括 %ENV 和 @INC 的有用部分。
...
Built under linux
Compiled at Mar 1 2016 17:15:04
%ENV:
PERL5LIB="/home/ron/lib"
PERLBREW_BASHRC_VERSION="0.78"
PERLBREW_HOME="/home/ron/.perlbrew"
... (more environment variables)
@INC:
/home/ron/lib
/etc/perl
/usr/local/lib/perl/5.18.2
/usr/local/share/perl/5.18.2
... (more @INC paths)
/usr/local/lib/site_perl
.
我看到OP的感谢评论,但我没有看到任何实际答案,所以我会写一个。
您必须使用
export PERL5LIB=<path>
而不是 set PERL5LIB=<path>
(或等效的 PERL5LIB=<path>
),因为 export
命令为 所有 shell(包括 PERL 子 shell)设置变量。使用 set
(或什么都不做)的赋值不会为新 shell 设置变量,而这正是您所需要的。