Позволяет вам преобразовать список в выражение , а не в операторы . Представьте, что хэш солдат определен так:
{ name => 'John Smith'
, rank => 'Lieutenant'
, serial_number => '382-293937-20'
};
тогда вы можете работать со списком имен отдельно.
Например,
map { $_->{name} } values %soldiers
является выражением . Он может идти везде, где разрешено выражение - кроме того, что вы не можете его назначить.
${[ sort map { $_->{name} } values %soldiers ]}[-1]
индексирует массив, принимая макс.
my %soldiers_by_sn = map { $->{serial_number} => $_ } values %soldiers;
Я считаю, что одним из преимуществ операционных выражений является то, что они сокращают ошибки, возникающие из временных переменных.
Если мистер Маккой хочет отфильтровать все поля шляп для рассмотрения, вы можете добавить эту проверку с минимальным кодированием.
my %soldiers_by_sn
= map { $->{serial_number}, $_ }
grep { $_->{name} !~ m/Hatfield$/ }
values %soldiers
;
Я могу продолжить цепочку этих выражений, так что если мое взаимодействие с этими данными должно достигнуть глубины для определенной цели, мне не нужно писать много кода, который притворяется, что я собираюсь сделать намного больше.