Diciamo che in Perl ho una lista di riferimenti hash, e ognuno è necessario per contenere un certo campo, diciamo foo
. Voglio creare un elenco che contenga tutti i mapping di foo
. Se c'è un hash che non contiene foo
il processo dovrebbe fallire.Perl, ottieni tutti i valori hash
@hash_list = (
{foo=>1},
{foo=>2}
);
my @list =();
foreach my $item (@hash_list) {
push(@list,$item->{foo});
}
#list should be (1,2);
C'è un modo più conciso di farlo in Perl?
Volevo solo chiarire che non stai creando un elenco di mapping, stai creando un elenco costituito da ciascun valore di hash 'foo'. E il tuo esempio di codice non ha nulla a che fare con il 'processo fallito' in modo da Non solo chiedendo più conciso. –
In generale: ogni volta che ti trovi a fare 'foreach ... {... push ..}' puoi rendere il codice più breve e più semplice usando map o grep. – Ether