2013-03-05 40 views
0

这个问题是跟进: What's the search order in perl's include path when a module is loaded张贴了一段时间后,但仍未得到答复。包含perl模块时的搜索顺序问题

我有安装在两个单独的文件夹IO模块2级的版本(1.22和1.25):

/some_path/lib/perl5/x86_64-linux-thread-multi/(对于IO.pm版本1.25) 和 /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/(对于IO.pm版本1.22)

在@INC列表看起来像:

/some_path/lib/perl5/x86_64-linux-thread-multi/ 
/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/ 
/usr/lib/perl5/site_perl/5.8.8/ 
/usr/lib/perl5/site_perl/ 
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/ 
/usr/lib/perl5/vendor_perl/5.8.8/ 
/usr/lib/perl5/vendor_perl/ 
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/ 
/usr/lib/perl5/5.8.8/ 
. 

当我尝试perl -e 'use IO',PERL返回以下错误信息:
IO对象版本1.22与/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm第253行的引导程序参数1.25不匹配。 这表明使用的是IO模块版本1.22,而不是IO版本1.25,即使应该首先定位IO版本1.25。

任何想法为什么这是?

+0

仍然没有得到解决?链接的问题有两个非常好的答案:从@INC的最低索引到最高的Perl搜索,直到找到所需的文件。 – ikegami 2013-03-05 19:18:36

+0

抱歉,我的意思是提供给问题的答案并未解决我的特定问题。 – mhursin 2013-03-06 08:06:15

回答

1

您的IO安装很差。

perl是找到1.25的IO.pm/some_path/lib/perl5/x86_64-linux-thread-multi/按预期运行,但它找到的第auto/IO/IO.so为1.22的(在/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/?)

+0

谢谢! 1.25的IO.so确实不见了。重新安装解决了我的问题。 – mhursin 2013-03-06 08:07:23