PERL:当我在我的脚本中添加“使用JSON :: RPC :: Client”但不使用它时,我收到错误

时间:2017-03-29 14:35:28

标签: json perl json-rpc

所以

这是我的脚本的导入行...当我取消注释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

1 个答案:

答案 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上。