sh-3.2# perl -v
This is perl, v5.8.9 built for darwin-2level
...
sh-3.2# perl 2348.pl
Can't locate HTTP/Cookies.pm in @INC (@INC contains: /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level /opt/local/lib/perl5/site_perl/5.8.9 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level /opt/local/lib/perl5/vendor_perl/5.8.9 /opt/local/lib/perl5/vendor_perl /opt/local/lib/perl5/5.8.9/darwin-2level /opt/local/lib/perl5/5.8.9 .) at 2348.pl line 24.
BEGIN failed--compilation aborted at 2348.pl line 24.
sh-3.2# find / | grep -i "Cookies\.pm"
/System/Library/Perl/Extras/5.10.0/HTTP/Cookies.pm
/System/Library/Perl/Extras/5.8.9/HTTP/Cookies.pm
/usr/local/ActivePerl-5.10/lib/HTTP/Cookies.pm
如何解决这个问题?我知道我必须编辑@INC但它在哪里? :)
答案 0 :(得分:5)
您在非标准位置安装了HTTP::Cookies。您可以使用cpan HTTP::Cookies
或/opt/lang/bin/cpan HTTP::Cookies
重新安装。
答案 1 :(得分:3)
我想你应该试试
perl -I /System/Library/Perl/Extras/5.8.9 -e'use HTTP::Cookies;'
答案 2 :(得分:2)
您可以在脚本中修改@INC
:
BEGIN {
unshift(@INC, '/System/Library/Perl/Extras/5.8.9/');
use HTTP::Cookies;
}
(更新了brian d foy的建议)
答案 3 :(得分:0)
@INC只是引用你的包含的数组,就像“路径”一样。
尝试
do '/usr/local/ActivePerl-5.10/lib/HTTP/Cookies.pm'
并使用HTTP :: Cookies应该可以正常工作。
编辑:您还可以找到@INC中的内容
$myincludes = join(", ",@INC);
print $myincludes;
答案 4 :(得分:0)
看起来您正在使用基于'/ opt / local'目录的自定义编译的Perl。需要调查的两件事:你从哪里运行Perl? /usr/bin
还有另一个吗?我猜你在找到的库和你正在使用的自定义库之间有一个系统安装的(在这种情况下你可能想使用cpan
实用程序将你想要的模块安装到自定义位置)。
答案 5 :(得分:0)
您无法“编辑”@INC。它被锁定在二进制文件中。 (是的,有一些Windows安装程序可以使用500个NUL来填充@INC的值,这样他们就可以对值进行热补丁,但是不要去那里。)
因此,为@INC创建新值的唯一方法是重新编译Perl发行版。