Załóżmy, że w Perlu mam listę odwołań hashowych, a każda z nich musi zawierać określone pole, na przykład foo
. Chcę utworzyć listę zawierającą wszystkie mapowania z foo
. Jeśli istnieje hasz, który nie zawiera foo
, proces powinien zakończyć się niepowodzeniem.Perl, uzyskaj wszystkie wartości mieszania
@hash_list = (
{foo=>1},
{foo=>2}
);
my @list =();
foreach my $item (@hash_list) {
push(@list,$item->{foo});
}
#list should be (1,2);
Czy istnieje bardziej zwięzły sposób robienia tego w Perlu?
Chciałem tylko wyjaśnić, że nie tworzysz listy odwzorowań, tworzysz listę, która składa się z każdej wartości '' foo' ", a twój przykładowy kod nie ma nic wspólnego z" procesem kończącym się niepowodzeniem ", więc nie tylko proszą o bardziej zwięzłe. –
Ogólnie: za każdym razem, gdy robisz "foreach ... {... push ..}" możesz uczynić kod krótszym i prostszym przy użyciu map lub grep. – Ether