代码:
my $compare = List::Compare->new(\@hand, \@new_hand);
print_cards("Discarded", $compare->get_Lonly()) if ($verbose);
print_cards
期望(标量,对数组的引用)
get_Lonly
返回数组。将它转换为引用的语法是什么,所以我可以将它传递给print_cards?例如,\@{$compare->getLonly()}
不起作用。
谢谢!
答案 0 :(得分:14)
你可能想要
print_cards("Discarded", [$compare->get_Lonly])
子例程不返回数组,它们返回值列表。我们可以使用[...]
创建数组引用。
另一种变体是制作一个显式数组
if ($verbose) {
my @array = $compare->get_Lonly;
print_cards("Discarded", \@array)
}
第一个解决方案是此的捷径。
@{ ... }
是解除引用运算符。它需要一个数组引用。如果你给它一个列表,这不会像你想象的那样工作。