0

这个问题是对以下问题的跟进: 当一个模块被加载时,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 object version 1.22 does not match bootstrap parameter 1.25 at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 253。这表明使用 IO 模块版本 1.22 而非 IO 版本 1.25,即使应首先定位 IO 版本 1.25。

知道为什么吗?

4

1 回答 1

2

您的 IO 安装错误。

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

于 2013-03-05T17:34:13.637 回答