如何引用perl sub的返回值

时间:2013-07-10 17:01:23

标签: perl syntax reference return-value

代码:

my $compare = List::Compare->new(\@hand, \@new_hand);
print_cards("Discarded", $compare->get_Lonly()) if ($verbose);

print_cards期望(标量,对数组的引用) get_Lonly返回数组。将它转换为引用的语法是什么,所以我可以将它传递给print_cards?例如,\@{$compare->getLonly()}不起作用。

谢谢!

1 个答案:

答案 0 :(得分:14)

你可能想要

print_cards("Discarded", [$compare->get_Lonly])

子例程不返回数组,它们返回值列表。我们可以使用[...]创建数组引用。

另一种变体是制作一个显式数组

if ($verbose) {
  my @array = $compare->get_Lonly;
  print_cards("Discarded", \@array)
}

第一个解决方案是此的捷径。


@{ ... }是解除引用运算符。它需要一个数组引用。如果你给它一个列表,这不会像你想象的那样工作。