Заметьте, что хэши не упорядочены, поэтому я беру слово first для обозначения сначала лексикографически .
map { # iterate over the list of hashrefs
$_->{ # access the value of the hashref
(sort keys $_)[0] # … whose key is the first one when sorted
}
}
@{ # deref the arrayref into a list of hashrefs
$cur[0] # first/only arrayref (???)
}
Выражение возвращает qw(9872 9871)
.
Назначение arrayref для массива, как в @cur = […]
, вероятно, является ошибкой, но я принял это за чистую монету.
Bonus perl5i решение:
use perl5i::2;
$cur[0]->map(sub {
$_->{ $_->keys->sort->at(0) }
})->flatten;
Выражение возвращает те же значения, что и выше.Этот код немного длиннее, но IMO более читабелен, потому что поток выполнения идет строго сверху вниз, слева направо.