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

shotgunefx has asked for the wisdom of the Perl Monks concerning the following question:

It never ceases to amaze me, how much more there is to learn in Perl. I've been using Perl for around 5 years and I tried to do something today and was suprised that I could not. Consider the following code...
#!/usr/bin/perl use strict; use warnings; my %hash = ( key => 'value'); my @array = (1..5); foreach $hash{key} (@array){ print "\$hash{key} is $hash{key}\n"; }
I would have assumed that $hash{key} would be a valid iterator variable but it's not. It dies with the message
syntax error at ../../hashodd.pl line 9, near "$hash{key"
Execution of ../../hashodd.pl aborted due to compilation erro

Obviously this is easy to get around and seeing I've never needed it before I guess it isn't a big deal, but I was suprised it wouldn't parse correctly.

The reason I attempted this BTW, was I had some validation routines and figured I would extend them to validate multiple values by wrapping the existing code in a forloop. (the inner code references the hash key). It's trivial to fix but is anyone else suprised by this?

-Lee

"To be civilized is to deny one's nature."