我完全按照文档中的说明使用perl模块CGI::XMLPost,并收到以下错误:
无法调用方法"数据"在/home/app/public_html/Post.pl第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 :(得分:0)
您的错误表明您正在对不是包名称或对象引用的值调用data()
方法。这似乎很奇怪,the constructor应该只返回一个有效的对象或" undef"。
我认为您需要确切了解您从构造函数中获取的内容。尝试打印$xmlpost
和ref $xmlpost
以查看您的内容。
但值得指出的是,该模块的最新版本是从2006年开始的。它可能不再适用于更新的系统。