这个问题是一个跟进: What's the search order in perl's include path when a module is loaded发布了一段时间,但仍未得到答复。
我有两个版本(1.22和1.25)的模块IO安装在两个单独的文件夹中:
/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行中的bootstrap参数1.25不匹配。
这表明使用IO模块版本1.22而不是IO版本1.25,即使应首先找到IO版本1.25。
知道为什么会这样吗?
答案 0 :(得分:1)
您的IO安装不正确。
perl
按预期在IO.pm
中找到了1.25 /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/
中?)