这里似乎有很多与缺少的方法和OO有关的问题,但据我所见,其中许多问题都与自制的Perl模块有关。不过,我的问题涉及CPAN模块中明显缺失的方法。我正在尝试使用Confluence::Client::XMLRPC模块来创建一个脚本,每当调用它时,它就会将文本上传到我们的Confluence页面。
我正在我们的私有服务器上编程,没有直接访问CPAN的权限。我必须手动从另一个盒子下载所有必需的包作为tarball,并通过FTP下载它们。然后,我使用make按照适当的顺序安装它们,同时注意依赖关系。
此外,公司的策略是在主目录中的自定义/lib文件夹中安装所有额外的Perl模块,并且我们不允许更改系统的Perl库(尽管我们仍然可以使用默认包)。我也没有根骄傲。
现在,我只是尝试用这个简单的代码(主要从汇流模块CPAN页面中提取。)测试XML服务器的功能:
#!/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,因为我的自定义库目录已经包含在$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 12.14PERL5LIB="/home/myID/lib/share/perl5"
发布于 2014-05-14 14:27:25
看来我忽略了源代码附带的一些过于方便的真实示例。看一下upload_files.pl中的Confluence-Client-XMLRPC-2.5/examples,就会发现,在use Confluence::Client::XMLRPC;之前,我只遗漏了一行代码use lib qw(../lib);。从那以后一切都像钟表一样运转。
遗憾的是,我不知道use lib qw(../lib);现在做什么,所以我认为这里的教训是学习更多关于general和一般Perl库的知识。如果我一开始就停下来阅读CPAN页面,我可能节省了大量的时间。
https://stackoverflow.com/questions/23639091
复制相似问题