I recently came across the following code snippet
$count_stuff{$_}++ for @stuff;
It's a pretty convenient way to use a hash to count occurrences of strings in an array for example. I understand how it works, but not why it works. I can not find the documentation for this way of using for.
Why does it work? And where is the documentation?
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).
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.
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With