在 @INC 中找不到 Date/Parse.pm

auh*_*man 4 perl

运行我的 Perl 脚本时出现以下错误。

\n\n

Can't locate Date/Parse.pm in @INC (@INC contains: /opt/local/lib/perl5/site_perl/5.16.1/darwin-thread-multi-2level /opt/local/lib/perl5/site_perl/5.16.1 /opt/local/lib/perl5/vendor_perl/5.16.1/darwin-thread-multi-2level /opt/local/lib/perl5/vendor_perl/5.16.1 /opt/local/lib/perl5/5.16.1/darwin-thread-multi-2level /opt/local/lib/perl5/5.16.1 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl .) at ../../tools/replace_tenant_json_data.pl line 27.\nBEGIN failed--compilation aborted at ../../tools/replace_tenant_json_data.pl line 27.

\n\n

从上面的错误我推断 perl 查找模块的错误目录。\n正确的目录是 /System/Library/Perl/5.16

\n\n

命令 env \xe2\x80\x93I perl \xe2\x80\x93V 与 perl \xe2\x80\x93V 不同

\n\n
`env \xe2\x80\x93I perl \xe2\x80\x93V\n @INC:\n/Library/Perl/5.16/darwin-thread-multi-2level\n/Library/Perl/5.16\n/Network/Library/Perl/5.16/darwin-thread-multi-2level\n/Network/Library/Perl/5.16\n/Library/Perl/Updates/5.16.2\n/System/Library/Perl/5.16/darwin-thread-multi-2level\n/System/Library/Perl/5.16\n/System/Library/Perl/Extras/5.16/darwin-thread-multi-2level\n/System/Library/Perl/Extras/5.16\n\nperl \xe2\x80\x93V\n@INC:\n/opt/local/lib/perl5/site_perl/5.16.1/darwin-thread-multi-2level\n/opt/local/lib/perl5/site_perl/5.16.1\n/opt/local/lib/perl5/vendor_perl/5.16.1/darwin-thread-multi-2level\n/opt/local/lib/perl5/vendor_perl/5.16.1\n/opt/local/lib/perl5/5.16.1/darwin-thread-multi-2level\n/opt/local/lib/perl5/5.16.1\n/opt/local/lib/perl5/site_perl\n/opt/local/lib/perl5/vendor_perl`\n
Run Code Online (Sandbox Code Playgroud)\n

jim*_*tut 6

@NigoroJr 在主要问题 ( ) 下的评论中给出了正确的提示cpan Date::Parse,但我将阐述输出中的差异perl -V

来自达尔文手册页env

SYNOPSIS
     env [-i] [name=value ...] [utility [argument ...]]

DESCRIPTION
     env executes utility after modifying the environment as specified on the command line.  The option
     name=value specifies an environmental variable, name, with a value of value.  The option '-i' causes
     env to completely ignore the environment it inherits.
Run Code Online (Sandbox Code Playgroud)

因此,当您运行 时env -i perl -V,您会得到一个空白/默认环境,它会选择系统安装的 perl。当你运行“perl -V”时,你会得到你实际使用的版本,它看起来像你安装的版本。

顺便说一句,看起来您的活动 Perl版本比系统提供的版本,所以也许您应该考虑切换回系统提供的 Perl。