我在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。我不想想我可能需要做什么样的体操才能解决这个问题。
有没有人遇到过这个?
答案 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的更好方法。