2013-07-10 17 views
6

Il codice:Come riferimento il valore di ritorno di un Perl sub

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

print_cards aspetta (scalari, riferimento alla matrice).
get_Lonly restituisce matrice. Qual è la sintassi per convertirla in un riferimento, quindi posso passarlo a print_cards? \@{$compare->getLonly()} non funziona, per esempio.

Grazie!

risposta

14

probabilmente avrete bisogno

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

subroutine non ritornano gli array, che restituiscono un elenco di valori. Possiamo creare un riferimento di array con [...].

L'altra variante potrebbe essere quella di fare un array esplicito

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

La prima soluzione è un collegamento di questo.


Il @{ ... } è un operatore di dereferenziazione. Si aspetta un riferimento di array. Questo non funziona come credi se gli dai una lista.

Problemi correlati