Подтвердить что ты не робот

Где документирован синтаксис Perl postfix `for`?

Недавно я натолкнулся на следующий фрагмент кода

$count_stuff{$_}++ for @stuff;

Это довольно удобный способ использовать хэш для подсчета вхождения строк в массив, например. Я понимаю, как это работает, но не почему это работает. Я не могу найти документацию для этого способа использования для.

Почему это работает? А где документация?

4b9b3361

Ответ 1

Он задокументирован на странице man perlsyn в модификаторах сообщений (что говорит о синтаксисе postfix) и в Foreach Loops (что объясняет, что "for" и "foreach" являются синонимами).

Ответ 2

Perl имеет постфиксные варианты для многих своих операторов. Просто вы пишете ключевое слово после тела одного оператора.

Вы можете использовать if, unless и т.д. таким же образом.

Ответ 3

Мне кажется, как стандартный Perl for. Принимает каждый элемент и выполняет тело (в данном случае это до) с заменой $_ на каждый элемент. Это просто альтернативный синтаксис для: for (@array) { statements }

Ответ 4

В соответствии с эта страница документирована здесь < ш > И вы должны прочитать "Циклы цикла" , чтобы получить ответ на ваш вопрос.

Короче говоря, если вы это хорошо понимаете:

for my $item ( @array ) { print $item }

И знайте синтаксис for и print:

LABEL for VAR (LIST) BLOCK
print LIST

В соответствии с документом foreach: If VAR is omitted, $_ is set to each value.
И согласно документу print: If LIST is omitted, prints $_

Итак, мы можем уменьшить приведенный выше пример:

for ( @array ) { print }

В постфиксной форме он будет выглядеть так:

print for @array;