2013-03-05 75 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