Это то, что вы хотите? Примечание: я не проверял это:
Цель: что-то " Как " $yaml_hash->{query}->{namespaces}-[*]->{id}
- кроме функциональных
Попробуйте это:
my @ids = map { $_->{id} } @{$yaml_hash->{query}->{namespaces}} ;
Однако цикл for, вероятно, понятнее многим людям.
my @ids;
foreach my $ns ( @{$yaml_hash->{query}->{namespaces}} ){ push @ids, $ns->{id} }
Примечание. Я продолжаю изучать общие структуры данных perl, а не что-либо специфичное для YAML.
Предполагается, что ' query ' и ' namespace * ' являются литералами; если это параметры, то вам нужно использовать грубые форсировки с дополнительными циклами for-in или while. Для перебора хешей ищите keys()
и each()
in perldoc perlfunc .