【发布时间】:2014-05-13 18:39:20
【问题描述】:
这里似乎有十几个与缺少方法和OO Perl有关的问题,但据我所知,其中很多都与自制的Perl模块有关。但是,我的问题涉及 CPAN 模块中明显缺失的方法。我正在尝试使用 Confluence::Client::XMLRPC 模块创建一个脚本,该脚本将在调用时将文本上传到我们的 Confluence Wiki 页面。
我在我们的私人服务器上编程,无法直接访问 CPAN。我不得不从另一个盒子手动下载所有需要的包作为 tarball 并通过 FTP 传输它们。然后我使用make 以正确的顺序安装它们,注意依赖关系。
此外,公司的政策是将所有额外的 Perl 模块安装在我们主目录中的自定义 /lib 文件夹中,并且我们不允许更改系统的 Perl 库(尽管我们仍然可以使用默认包)。我也没有root权限。
现在我只是想用这个简单的代码 (pulled mostly from the Confluence module CPAN page) 测试 XML-RPC 服务器的功能:
#!/usr/bin/env perl
use strict;
use warnings;
use RPC::XML::Parser;
use Confluence::Client::XMLRPC;
my $username = 'username';
my $password = 'password';
my $proxyurl = '.../confluence/rpc/xmlrpc';
my $wiki = Confluence::Client::XMLRPC->new($username, $password, $proxyurl);
我应该在这里注意,我在这里没有使用use lib,因为我的自定义lib目录已经包含在$PERL5LIB中(也许这是错误的来源——方法被覆盖了?)
代码吐出如下错误:
Can't locate object method "simple_request" via package "RPC::XML::Client::new: Unable to get RPC::XML::Parser object" (perhaps you forgot to load "RPC::XML::Client::new: Unable to get RPC::XML::Parser object"?) at /home/myID/lib/share/perl5/Confluence/Client/XMLRPC.pm line 141.
如果它是一个自定义模块,我会怀疑我这里的编码错误,但它是一个标准 CPAN 模块,制作、测试和安装都非常好。我已经验证包 RPC/XML/Parser.pm 确实存在。我尝试打印 @INC 位置以验证我使用的是正确的模块:
print($INC{"Confluence/Client/XMLRPC.pm"}, "\n");
print($INC{"RPC/XML/Client.pm"}, "\n");
print($INC{"RPC/XML/Parser.pm"}, "\n");
打印出来:
/home/myID/lib/share/perl5/Confluence/Client/XMLRPC.pm
/home/myID/lib/share/perl5/RPC/XML/Client.pm
/home/myID/lib/share/perl5/RPC/XML/Parser.pm
看起来和我预期的差不多。自从试图找出问题所在以来,我一直在扯头发,但还没有取得比这更大的进展。任何建议和/或建议将不胜感激!
其他信息:
- perl:
revision 5 version 10 subversion 1 - 字段:
2.14 - %ENV:
PERL5LIB="/home/myID/lib/share/perl5" - @INC:
- /home/myID/lib/share/perl5
- /usr/local/lib64/perl5
- /usr/local/share/perl5
- /usr/lib64/perl5/vendor_perl
- /usr/share/perl5/vendor_perl
- /usr/lib64/perl5
- /usr/share/perl5
【问题讨论】:
-
问题与
simply_request正在包 RPC::XML::Client::new 中查找这一事实有关,请发布您的perl和 @ 987654336@版本信息。 -
啊,我可以得到
perl的版本,但是我如何得到fields的版本信息呢? -
perl -Mfields -e 'print $fields::VERSION' -
您对
Confluence::Client::XMLRPC->new的参数有问题。它期望( <URL>, <user>, <pass> )。这可能会导致级联错误,因为您的 RPC 客户端现在使用您的用户名作为 URL。 -
哦,很好理解那个。没有解决问题,谢谢!我添加了我的版本信息以及 %ENV 和 @INC。
标签: perl oop xml-rpc perl-module confluence