Ho una struttura dati che è un hash che contiene un array di hash. Mi piacerebbe arrivare lì dentro e tirare fuori il primo hash che corrisponde a un valore che sto cercando. Ho provato questo:Perché lo spostamento di Perl si lamenta? Il tipo di arg 1 per lo spostamento deve essere array (non grep iterator). '?
my $result = shift grep {$_->{name} eq 'foo'} @{$hash_ref->{list}};
Ma che mi da questo errore: Type of arg 1 to shift must be array (not grep iterator).
Ho riletto il perldoc per grep
e penso che quello che sto facendo ha un senso. grep
restituisce una lista, giusto? È nel contesto sbagliato?
Per ora utilizzerò una variabile temporanea, ma mi piacerebbe capire perché questo non funziona.
Penso che andrò a scrivere "Una lista non è un array" 100 volte sulla mia lavagna. Grazie. – wes
Ora c'è una risposta molto migliore per le FAQ: http://www.effectiveperlprogramming.com/blog/39 –
@brian d foy - Quando vengono aggiornate le FAQ? (lo vedremo in un punto di rilascio di Perl 5 versione 10, o sarà nella versione 12?) – Quentin