这个问题是对以下问题的跟进: 当一个模块被加载时,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。
知道为什么吗?