@INC 没有读取 $PERL5LIB

问题描述 投票:0回答:2

我正在尝试使用

$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 module tcsh
2个回答
2
投票

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
  .

0
投票

我看到OP的感谢评论,但我没有看到任何实际答案,所以我会写一个。

您必须使用

export PERL5LIB=<path>
而不是
set PERL5LIB=<path>
(或等效的
PERL5LIB=<path>
),因为
export
命令为 所有 shell(包括 PERL 子 shell)设置变量。使用
set
(或什么都不做)的赋值不会为新 shell 设置变量,而这正是您所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.