http://www.perlmonks.org?node_id=1018657


in reply to Dereference string in foreach

By the way, in "Perl Best Practices" Damian Conway advises that you should always write 'my' before your for-loop variable because if you don't :

[The resulting] behaviour is contrary to all reasonable expectation.  Everywhere else in Perl, when you declare a lexical variable, it's visible throughout the remainder of its scope, unless another explicit my declaration hides it.  So it's natural to expect that the [variable] used in the for loop is the same lexical [variable] that was declared before the loop.

But it isn't.
("Perl Best Practices", p. 108)

My code makes it neccessary to loop through an array and to output all elements using a reference.

That doesn't seem to make a lot of sense:

use strict; use warnings; use 5.010; my @arr = (10, 20, 30); for my $num (@arr) { say ${\$num}; } --output:-- 10 20 30