Many (some? Me anyway, but a long time ago:) have been bitten by trying
my $aryref = \qw(A B C);
to generate a ref to an array of quoted scalars, and ended up with a a ref to the last quoted scalar. This is explained in perlref
Taking a reference to an enumerated list is not the same as using square brackets--instead it's the same as creating a list of references!@list = (\$a, \@b, \%c); @list = \($a, @b, %c); # same thing!
Now, for reasons of my own, I wanted to generate an array of references to scalar, but the twist is that the scalars in question are a list of sequential integers.
Now the easy way to generate a list of sequential integers is the range operator 3 .. 5,
so I tried [ \(3 .. 5)]
and got [[3,4,5]]
Which was not what I expected. It's easy enough to work around
[ map \$_, 3 .. 5 ]
or even a golfish
[\(@_=(3..5))],
but it seems strange that the first option doesn't do what I thought. Is this a bug, special magic, what everyone else expected?
Examine what is said, not who speaks.
The 7th Rule of perl club is -- pearl clubs are easily damaged. Use a diamond club instead.
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |