Можно ли написать цикл foreach Perl в одну строку? - PullRequest
14 голосов
/ 16 августа 2011

Возможно ли использовать однострочный цикл foreach в Perl?

$hash{$thing}++ foreach my $thing (@things);

Я знаю, что это возможно со многими другими командами, такими как,

die "Invalid file!\n" if (open($Handle, "file.txt"));

Я знаюэто открытое заявление может быть нарушено:)

Ответы [ 2 ]

31 голосов
/ 16 августа 2011

Почти. В суффиксе foreach вы должны использовать $ _:

$hash{$_}++ foreach @things;

Или эквивалентно (поскольку for и foreach имеют псевдоним для синтаксиса):

$hash{$_}++ for @things;
3 голосов
/ 16 августа 2011

Вы можете сделать:

foreach my $thing (@things) {$hash{$thing}++};

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...