On Feb 19, Bradford Ritchie said: >foreach my $elem (@long_list) { > my $k="junk"; > foreach $k (keys %hash) { > last if($elem =~ /$k/); ## ok, I've got the $k I need > } > $hash{$k}->{'foo'} = 42; ## oops, $k is reset to "junk" >}
That behavior is documented, yes. Perhaps you want to do: for my $elem (@long_list) { for my $k (keys %hash) { if ($elem =~ $k) { $hash{$k}{foo} = 42; last; } } } >Or, is there any way to get around the way foreach localizes the index >variable? No. It does that on purpose, and is documented to do so. -- Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/ RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/ ** Look for "Regular Expressions in Perl" published by Manning, in 2002 ** <stu> what does y/// stand for? <tenderpuss> why, yansliterate of course. [ I'm looking for programming work. If you like my work, let me know. ] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]