It seems inconceivable to me that so simple an example could be a bug in perl, and yet I cannot square the behaviour with my expectations. What am I missing? The testcase that follows fails at least on 5.8.8 and blead@31281: #!/usr/bin/perl -w use strict; my %v = (2 => 3); my $el; { $el = 2; local $v{$el} = 4; $el = 17; } use Data::Dumper; print Dumper(\%v); if ($v{2} == 3 && !$v{17}) { # This is what I expected. print "ok\n"; } elsif ($v{2} == 4 && $v{17} == 3) { # This is what I see. print "not ok\n"; } else { # Hmm, you got yet another result. die "# whoa, freaky\n"; } __END__ If I am missing something stupid, my apologies: the source of the test case arose as a variation from my usual coding style, so I can believe I might not have come across this behaviour before. However I cannot see anything in perlsub 'Temporary Values via local()' to determine it either way, which should at least be remedied. HugoThread Next