Некоторые XML::LibXML
методы возвращают массивы вместо ссылок на массивы.
Вместо этого:
$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()
в массиве, а затем передать ссылку на массив своему собственному методу, но, скажем, я хочу попробовать уменьшенную версию своего кода. Это правильный синтаксис для передачи результатов метода или я должен использовать что-то другое?
Спасибо!
EDIT:
Теперь предположим, что я хочу изменить process_items()
на process_item()
, чтобы я мог делать вещи для каждого элемента массива, на который ссылаются, используя цикл for
. Что-то вроде:
$self->process_item($_) for ([ $xml->findnodes('items/item') ]);
Это не работает, поскольку process_item()
выполняется только один раз, потому что в цикл for
передается одно значение (ссылка на массив из findnodes()
). Как правильно использовать $_
в этом случае?