perl找不到已安装的模块,但CPAN可以,而且我可以找到它们。为什么不能perl?

时间:2014-07-11 01:50:55

标签: macos perl macports

我在macbook 10.6上使用安装在/ opt / local / bin中的macls perl 5.16.3

jason-danckss-macbook:eg Jason$ which perl
/opt/local/bin/perl

我正在测试AI附带的demo.pl文件:来自metaCPAN的Categorizer.pm。我安装了AI:通过CPAN提供的分类程序,提供了macports perl:

尝试运行它:

原:

./demo.pl /users/Jason/Desktop/Dropbox/capstone/capstone/notes/HTML/sock
Can't locate AI/Categorizer.pm in @INC (@INC contains: /sw/lib/perl5/5.10.0/darwin-thread-multi-
2level /sw/lib/perl5/5.10.0 /sw/lib/perl5/darwin-thread-multi-2level /sw/lib/perl5 /sw/lib/perl5
/darwin /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level
/System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0
/Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network
/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library
/Perl/Extras/5.10.0 .) at ./demo.pl line 21.
BEGIN failed--compilation aborted at ./demo.pl line 21.

稍加修改:use lib "/opt/local/lib/perl5/5.16.3";,因为这是我使用CPAN时写入模块的地方(如果重要,我使用perl -MCPAN -e shell IDK)

jason-danckss-macbook:eg Jason$ ./demo.pl ../HTML/sock
Can't locate AI/Categorizer.pm in @INC (@INC contains: /opt/local/lib/perl5/5.16.3/darwin-thread-
multi-2level /opt/local/lib/perl5/5.16.3 /sw/lib/perl5/5.10.0/darwin-thread-multi-2level /sw/lib
/perl5/5.10.0 /sw/lib/perl5/darwin-thread-multi-2level /sw/lib/perl5 /sw/lib/perl5/darwin
/Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System
/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0
/Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network 
/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library
/Perl/Extras/5.10.0 .) at ./demo.pl line 21.
BEGIN failed--compilation aborted at ./demo.pl line 21.

在正确的位置查看它:

jason-danckss-macbook:eg Jason$ find /opt/local/lib/perl5 -name 'Categorizer.pm'
/opt/local/lib/perl5/site_perl/5.16.3/AI/Categorizer.pm

我甚至尝试使用诊断。我和perl都不能找到诊断。 CPAN找不到它。我猜它是在最近的perl版本中删除的?

好的,所以我的计算机上有fink和macport,以及默认的perl安装。 macports版本perl是$ PATH中第一个perl。在它最近出现之后,我对它很满意:5.16.3

我不知道或认为从多个位置读取模块是一个坏主意。但是IDK。我不想想我可能需要做什么样的体操才能解决这个问题。

有没有人遇到过这个?

1 个答案:

答案 0 :(得分:5)

我刚刚查看了AI::Categorizer软件包,并且所包含的demo.pl文件有一个#!/usr/bin/perl的硬编码shebang,所以我相信它正在尝试使用系统perl。

假设您还没有尝试更改此行(demo.pl的第一行)以指向/opt/local/bin/perl,那么我怀疑这样做会解决您的问题。

您也可以考虑将shebang设置为/usr/bin/env perl,该路径应使用路径中perl的版本。另请查看perlbrew,这可能是安装非系统版Perl的更好方法。