这里似乎有十几个与遗漏方法和OO Perl相关的问题,但从我所看到的,很多问题都与自制的Perl模块有关。然而,我的问题涉及CPAN模块中显然缺失的方法。我正在尝试使用Confluence::Client::XMLRPC
模块创建一个脚本,无论何时调用它都会将文本上传到我们的Confluence Wiki页面。
我在私人服务器上编程,无法直接访问CPAN。我必须手动下载所有必需的软件包作为来自另一个盒子的tarball并将它们FTP。然后我使用make
以正确的顺序安装它们,注意依赖性。
此外,公司策略是在我们的主目录中的自定义/lib
文件夹中安装所有其他Perl模块,并且我们不允许更改系统的Perl lib(尽管我们仍然可以使用默认包)。我也没有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
看起来和我预期的差不多。自从试图找出错误之后,一直在撕扯我的头发,但还没有取得更多进展。任何建议和/或建议将不胜感激!
其他信息:
revision 5 version 10 subversion 1
2.14
PERL5LIB="/home/myID/lib/share/perl5"
答案 0 :(得分:0)
看起来我忽略了源代码附带的一些非常方便的例子。在upload_files.pl
中对Confluence-Client-XMLRPC-2.5/examples
进行五秒钟查看表明我在use lib qw(../lib);
之前只丢失了一行代码use Confluence::Client::XMLRPC;
。在那之后,一切都像发条一样工作。
可悲的是,我不知道use lib qw(../lib);
现在做了什么,所以我认为这里的教训是要了解更多有关OO Perl和Perl库的信息。如果我在第一时间停下来阅读CPAN页面,我可能已经节省了大量的时间。