I recently came across the following code snippet
$count_stuff{$_}++ for @stuff;
It\'s a pretty convenient way to use a hash to count occurrenc
Perl has postfix variants for many of its statements. It's just that you write the keyword after the one-statement body.
You can use if
, unless
, etc. in the same way.
It seems to me like the standard Perl for
. Takes each element and executes the body (in this case is before) with $_
substituted with each element. It is just an alternate syntax for: for (@array) { statements }
According to this page it is documented here
And you should read Foreach Loops to get answer for your question.
In short, If you you understand this well:
for my $item ( @array ) { print $item }
And know syntax of for
and print
:
LABEL for VAR (LIST) BLOCK
print LIST
According to the doc of foreach: If VAR is omitted, $_ is set to each value.
And according to the doc of print: If LIST is omitted, prints $_
So we can reduce the example above:
for ( @array ) { print }
In the postfix form it will look like this:
print for @array;
It is documented in the "perlsyn" man page, under Statement Modifiers (which talks about the postfix syntax) and under Foreach Loops (which explains that "for" and "foreach" are synonyms).