2013-07-10 49 views
6

代码一个perl的返回值:如何参考子

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

print_cards预计(标量,参照数组)。
get_Lonly返回数组。什么语法将其转换为引用,以便我可以将它传递给print_cards?例如,\@{$compare->getLonly()}不起作用。

谢谢!

回答

14

你可能想

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

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

另一变体将是使显式阵列

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

第一个解决方案就是一个快捷方式。


@{ ... }是解引用运算符。它期望一个数组引用。如果你给它一个列表,这不起作用。