从@INC中删除条目

时间:2018-05-23 19:48:44

标签: perl terminal

是否可以从命令行中删除@INC中的条目?

我知道export PERL5LIB=/path/file.pm可以用来添加它们,但它们是否可以以类似的方式删除?

修改
我知道目录通常不会从@INC中删除,但在我的情况下(也许是你的,如果你在这里寻求帮助)我添加了一个我需要删除的条目,不仅因为它是一个自定义条目,而且因为它指定了一个文件(错误使用@INC)而不是文件夹。

附加信息:
export命令是从命令行执行的,而不是从脚本执行的。

2 个答案:

答案 0 :(得分:7)

您可以使用$ PERL5LIB=/tmp/foo perl -le 'print for @INC' /tmp/foo ... normal @INC entries ... $ PERL5LIB=/tmp/foo perl -M-lib=/tmp/foo -le 'print for @INC' ... normal @INC entries ... 命令行中的no lib pragma:

PERL5LIB

更新:根据问题的措辞,我假设您有一个系统,您已设置perl,并询问如何偶尔排除条目,仅对于no lib的特定运行(“来自命令行”)。这就是上面所做的:perl在命令行中使用的效果仅对export PERL5LIB=...的运行是暂时的。

但是评论中的讨论显示它恰恰相反:你从命令行运行了export PERL5LIB=“(其效果只是当前会话/ shell的临时性),并且想要撤消更改 - 解决方案要么运行export(设置新值会覆盖前一个值,PERL5LIB不像添加元素到列表,它只是设置一个新值),或者只是退出并重新登录。

如果您在.profile.bashrc文件的位置设置了(Column B) Alex 4 Alex 3 Bart 2 Alex 3 Bart 2 example Alex= 10 Bart= 4 ,那么您需要编辑这些文件并注释掉或删除您不想要的条目,然后退出并重新登录。

答案 1 :(得分:3)

您可以在BEGIN块中更改它。示例:

$ perl -MData::Dumper -e 'BEGIN { @INC = qw// }; print Dumper(\@INC);'
$VAR1 = [];