2013-07-10 9 views
6

Kod:Jak odniesienia wartość powrotną Perl sub

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

print_cards oczekuje, (skalarnych, odniesienie do tablicy).
get_Lonly zwraca tablicę. Jaką składnię można przekonwertować na odnośnik, aby można było przekazać go do print_cards? \@{$compare->getLonly()} nie działa, na przykład.

Dzięki!

Odpowiedz

14

Prawdopodobnie chcesz

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

Podprogramy nie zwracają tablice, wrócą listę wartości. Możemy utworzyć odwołanie do tablicy z [...].

Innym wariantem byłoby dokonanie wyraźnego tablicę

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

Pierwsze rozwiązanie jest skrótem od tego.


@{ ... } to operator dereferencyjny. Oczekuje odniesienia do tablicy. To nie działa tak jak myślisz, jeśli dasz mu listę.

Powiązane problemy