【问题标题】:Why is this perl command giving unexpected results?为什么这个 perl 命令会给出意想不到的结果?
【发布时间】:2021-12-29 14:33:45
【问题描述】:

在我的.bashrc,我有

eval "$(perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib)"; export PERL5LIB=$HOME/util/perl5:$PERL5LIB

如果以后我这样做

env | grep PERL5LIB

我明白了

PERL5LIB=/home/myUser/util/perl5:/home/myUser/perl5/lib/perl5:

为什么第二条路径不正确?我会期待

/home/myUser/util/perl5/lib/perl5

要添加到 PERL5LIB,而不是

/home/myUser/perl5/lib/perl5

我是否误解了传递给eval 的 perl 命令?该命令的输出,在命令行中运行(而不是从.bashrc)是

$ perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib
Attempting to create directory /home/myUser/perl5
$

【问题讨论】:

  • perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib 的输出是什么?
  • 您添加到PERL5LIB 的唯一内容是$HOME/util/perl5 之后的部分是它之前的部分。为什么你认为它应该有util
  • @Barmar 但在运行此行之前,我会使用unset PERL5LIB 来确定。结果是一样的
  • @pretzlstyle:这不是我要求的命令的输出。
  • @choroba 似乎是这样。至少这就是标准输出的全部内容。再次编辑

标签: bash perl environment-variables


【解决方案1】:

除非你另有说明,否则 local::lib 使用 ~/perl5。

改变

perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib

perl -I$HOME/util/perl5/lib/perl5 -Mlocal::lib=$HOME/util/perl5

【讨论】:

  • 成功!谢谢你。这里的用法很奇怪。 -I 参数不通知lib 的位置?虽然我对 perl 一无所知
  • 它通知perl 在哪里搜索模块,例如local::lib。它与 local::lib 或 local::lib 将通知 Perl 搜索“本地库”无关。例如如果你在 Perl 已经搜索过的目录中安装 local::lib,perl -Mlocal::lib=$HOME/util/perl5 就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多