所以
这是我的脚本的导入行...当我取消注释JSON :: RPC行时,我得到下面列出的错误。我甚至没有在脚本中使用该库,仍然得到下面列出的错误
#!/usr/bin/perl -w
use Data::Dumper;
use Mail::MboxParser;
use Mail::MboxParser::Mail;
use Mail::Box::Manager;
use Email::Delete qw[delete_message];
use POSIX;
use Date::Calc qw(:all);
#use JSON::RPC::Client;
use strict;
-
/usr/bin/perl: symbol lookup error: /usr/local/lib64/perl5/auto/Storable/Storable.so: undefined symbol: Perl_Istack_sp_ptr
在perl 5.10框中:
perl -MStorable -wle'print $ARGV[0]->VERSION' Storable
2.30
在perl 5.16框中:
perl -MStorable -wle'print $ARGV[0]->VERSION' Storable
perl: symbol lookup error: /usr/local/lib64/perl5/auto/Storable/Storable.so: undefined symbol: Perl_Istack_sp_ptr
答案 0 :(得分:0)
(我无法在CPAN上找到一个名为JSON :: RPC :: Client的模块,所以其中一些是猜测。模块来自哪里?)
当您取消注释use
行时,您收到这些错误的原因是Perl会尝试加载库。并且负载失败。
看起来你的图书馆有一个XS组件。也就是说,它不是用Pure Perl编写的。其中一部分是围绕用另一种语言编写的库的Perl包装器(可能是C)。
Perl保证为给定主要版本的Perl(在本例中为5.10)编写的XS库将适用于相同主要版本号下的所有次要版本(因此任何5.10.x)。但主要版本通常会破坏二进制兼容性。为Perl 5.10.x构建的XS模块通常不适用于Perl 5.16.x。
解决方案是为您的新版Perl重建模块。我希望你知道源代码的位置,因为(正如我之前提到的那样)它不在CPAN上。