2014-09-03 51 views
0

我使用Perl模块CGI::XMLPost完全按照文档描述并得到以下错误:如何正确使用Perl CGI :: XMLPost?

Can't call method "data" without a package or object reference at /home/app/public_html/Post.pl line 45.

的代码看起来是这样的:

use strict; 
use CGI::XMLPost; 

my $xmlpost = CGI::XMLPost->new(); 
if(defined $xmlpost) { 
    my $xml = $xmlpost->data(); # crashes here 
    # ... do something with $xml 
} 

我试图关闭use strict;看如果上游系统在网络上执行POST以外的其他操作。它没有任何区别。

仅供参考,以前版本的代码打包了一个稍微定制的CGI :: XMLPost 1.5版本。这是适合使用read而不是sysread,这显然不工作(没有解释提供)。

因为我完全按照文档,我错过了什么吗?任何人都可以指出为什么sysread可能会破坏以上简单的代码片段?是否有更可靠的方法来实现相同的功能?

回答

0

您的错误表示您对不是包名称或对象引用的值调用data()方法。这似乎很奇怪,因为the constructor应该只返回一个有效的对象或“undef”。

我想你需要找出你正在从构造函数返回的东西。尝试打印出$xmlpostref $xmlpost,看看你有什么。

但值得指出的是,该模块的最新版本是从2006年开始的。它有可能不再适用于更新的系统。