2013-07-10 50 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) 
} 

第一個解決方案就是一個快捷方式。


@{ ... }是解引用運算符。它期望一個數組引用。如果你給它一個列表,這不起作用。