一些XML::LibXML
方法返回数组而不是对数组的引用。如何通过引用传递一个Perl方法产生的数组?
而不是这样做:
$self->process_items($xml->findnodes('items/item'));
我想要做的事,如:
$self->process_items(\$xml->findnodes('items/item'));
因此,在process_items()
我可以取消引用原始数组,而不是创建一个副本:
sub process_items {
my ($self, $items) = @_;
foreach my $item (@$items) {
# do something...
}
}
我总是可以将findnodes()
的结果存储到一个数组中,然后将数组引用传递给我自己的方法,但让我们说我想尝试一下我的代码的简化版本。这是传递方法结果的正确语法还是我应该使用不同的东西?
谢谢!
编辑:
现在假设我想改变process_items()
到process_item()
这样我就可以使用for
循环引用数组的每个元素上做的东西。是这样的:因为一个单一的值被传递到for
环路(从findnodes()
所述参考阵列)
$self->process_item($_) for ([ $xml->findnodes('items/item') ]);
这并不作为process_item()
工作只执行一次。在这种情况下使用$_
的正确方法是什么?
这不是我清楚你的编辑是否是一个新的问题或furbishing原问题的进一步的细节。如果是前者,我建议你发布一个新问题。如果是后者,那么我觉得你的问题需要一些重新说明。 – Zaid 2010-06-12 13:42:11
@zaid:是后者。我已经改变了文本,因此它更清晰。 – arareko 2010-06-14 17:35:13