Предположим, что в Perl у меня есть список хеш-ссылок, и каждый из них должен содержать определенное поле, скажем, foo
. Я хочу создать список, содержащий все сопоставления foo
. Если есть хеш, который не содержит foo
, процесс должен завершиться неудачно.Perl, получить все значения хэша
@hash_list = (
{foo=>1},
{foo=>2}
);
my @list =();
foreach my $item (@hash_list) {
push(@list,$item->{foo});
}
#list should be (1,2);
Есть ли более сжатый способ сделать это в Perl?
Я просто хотел уточнить, что вы не создаете список сопоставлений, вы создаете список, состоящий из каждого хэша 'foo' значение., А ваш пример кода не имеет ничего общего с« процессом сбоя », поэтому вы 'не просто попросить более кратким. –
В общем: всякий раз, когда вы обнаруживаете, что выполняете 'foreach ... {... push ..}', вы можете сделать код короче и проще с помощью map или grep. – Ether