Perl XML-RPC与Perl反射相结合的问题?

时间:2011-05-22 07:12:27

标签: perl reflection xml-rpc

我正在使用Frontier::Daemon为Robot Framework测试自动化框架构建测试库服务器。我让测试库服务器在本地执行代码,但是当它运行/执行XML-RPC时,就是我遇到问题。部分问题也可能是因为我使用Perl反射来执行测试命令。

也许RPC::XML可能更合适,但在我开发服务器时,Frontier :: Daemon似乎更容易开始。

Perl反射代码来自本网站上发布的帖子以及维基百科的代码反射页面(Perl部分)。

代码托管在Google Code,您可以browse the code或查看以供审核。问题是described in more detail at the project site

我希望Perl开发人员社区可以给我一些关于问题根源以及如何解决问题的建议。

谢谢, 戴夫

1 个答案:

答案 0 :(得分:1)

有几件事你不知道。首先,Frontier :: Daemon将您提供的“方法”称为简单的子例程调用,但是您提供的两个方法希望被称为远程服务器对象的方法。更改代码以执行此操作:

my $svr = Frontier::Daemon->new(
    methods => {
        get_keyword_names => sub { $self->get_keyword_names(@_) },
        run_keyword => sub { $self->run_keyword(@_) },
    },
...

按照他们的预期调用您的方法。

其次,你的get_keyword_names尝试返回一个数组,但是你使用的接口似乎只允许一个返回值,并且在标量上下文中调用方法,导致get_keyword_names返回数组中元素的数量。我想你想要返回对数组的引用:

return \@methods;