【问题标题】:Perlbrew can't find @INCPerlbrew 找不到 @INC
【发布时间】:2021-07-02 21:41:57
【问题描述】:

我认为 perlbrew 已正确安装并使用了正确的 @INC。我切换到 perlbrew。我想要的模块(String::Approx)已安装。我在~/.bash_profile 中有来源~/perl5/perlbrew/etc/bashrc

但我收到错误 Can't locate String/Approx.pm in @INC

$ which perl
/Users/kip/perl5/perlbrew/perls/perl-5.33.9/bin/perl
$ perlbrew info
Current perl:
  Name: perl-5.33.9
  Path: /Users/kip/perl5/perlbrew/perls/perl-5.33.9/bin/perl
  Config: -de -Dprefix=/Users/kip/perl5/perlbrew/perls/perl-5.33.9 -Dusedevel -Aeval:scriptdir=/Users/kip/perl5/perlbrew/perls/perl-5.33.9/bin
  Compiled at: May  3 2021 10:04:48

perlbrew:
  version: 0.92
  ENV:
    PERLBREW_ROOT: /Users/kip/perl5/perlbrew
    PERLBREW_HOME: /Users/kip/.perlbrew
    PERLBREW_PATH: /Users/kip/perl5/perlbrew/bin:/Users/kip/perl5/perlbrew/perls/perl-5.33.9/bin
    PERLBREW_MANPATH: /Users/kip/perl5/perlbrew/perls/perl-5.33.9/man
$ perlbrew list-modules
App::cpanminus
PerlIO::gzip
String::Approx
install
$ perl -E 'say for @INC'
/Users/kip/perl5/perlbrew/perls/perl-5.33.9/lib/site_perl/5.33.9/darwin-2level
/Users/kip/perl5/perlbrew/perls/perl-5.33.9/lib/site_perl/5.33.9
/Users/kip/perl5/perlbrew/perls/perl-5.33.9/lib/5.33.9/darwin-2level
/Users/kip/perl5/perlbrew/perls/perl-5.33.9/lib/5.33.9

这是我尝试运行脚本时的特定错误消息(为便于阅读而格式化)。系统@INC 似乎仍在搜索中?

Can't locate String/Approx.pm in @INC (you may need to install the String::Approx module) 
(@INC contains: /Library/Perl/5.30/darwin-thread-multi-2level 
/Library/Perl/5.30 /Network/Library/Perl/5.30/darwin-thread-multi-2level 
/Network/Library/Perl/5.30 
/Library/Perl/Updates/5.30.2 
/System/Library/Perl/5.30/darwin-thread-multi-2level 
/System/Library/Perl/5.30 
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level 

/System/Library/Perl/Extras/5.30) at ./myScript.pl line 21.

【问题讨论】:

  • perl -e'require String::Approx;' 输出什么?
  • (以后请以文字的形式发布,而不是图片。)
  • @ikegami 它什么也没做......
  • 这是 macOS 吗?
  • 我认为./myScript.pl 使用的是系统perl,而不是perlbrew perl。这就解释了为什么它找不到模块。该脚本中有shebang 吗?或者,为了避免解释 shebang,您可以将脚本运行为 perl myScript.pl 而不是 myScript.pl

标签: macos perl perlbrew


【解决方案1】:

./myscript.pl 运行myscript.pl 似乎正在使用系统perl (v5.30)。也许该文件中有一个指向系统 perl 的 shebang 行。如果是这种情况,那么调用 ./myscript.pl 将始终引用 shebang 行中指定的程序,而不是 perlbrew 将您的环境设置为的程序。

解决方案:

  1. 使用perl 显式调用脚本

    $ perl myscript.pl    # this
    $ ./myscript.pl       # and not this
    
  2. 更新您的 shebang 行以使用“当前”perl。其中一项或多项可能有效:

    #!perl
    #!/usr/bin/env perl
    

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2017-07-13
    • 2021-03-03
    • 2013-10-24
    相关资源
    最近更新 更多