如何从命令行覆盖perl @INC

时间:2013-11-07 13:32:31

标签: perl

如何使用命令行中的路径覆盖@INC内容。如果我使用“-I”选项,它只会添加到默认路径。

2 个答案:

答案 0 :(得分:4)

我不知道您为什么要从@INC中删除。 @INC中早期路径中的模块会覆盖以后路径中的模块,因此通常只需添加到@INC的前面

export PERL5LIB=path2:path2
script ...

   -or-

PERL5LIB=path2:path2 script ...

   -or-

perl -Mlib=path1,path2 script ...

   -or-

# Doesn't add arch subdirs automatically!
perl -Ipath1 -Ipath2 script ...

但是可以做你想做的事。

perl -e'
   @INC = grep { ... } @INC;
   do(shift(@ARGV))
      or die "Error attempting to execute script: $@\n";
' script arg arg

如果要将...中的路径保留在$_中,请将@INC替换为返回true的表达式。

答案 1 :(得分:0)

$ export PERL5LIB=/custom/dir:/another/custom/dir;
$ perl script.pl