У меня есть список хэшей, и некоторые из хэшей содержат ключ, который предоставляет сам массив.
my @cars = (
{ # empty car
name => "BMW",
},
{ # car with passengers
name => "Mercedes",
passengers => [qw(Paul Willy)],
},
...
)
Это почти как выше, но, конечно, не с примером глупых машин: -)
Теперь мне нужно получить список всех «пассажиров» из всех хэшей, включая те, которые даже не предлагают массив пассажиров.
На втором шаге мне нужно получить уникальные записи из списка(на самом деле пассажиры - это ссылки на объекты Perl, и каждый объект мне нужен один раз в списке)
На данный момент я делаю:
my (@all, @passengers, %seen);
for(@cars) {
push @all, @{$_->{passengers}} if $_->{passengers};
}
@passengers = grep { ! $seen{$_} ++ } @all;
Я хотел бы избавиться от @all и броситьсписок всех пассажиров прямо в grep
.
Есть предложения?