The test case can be reduced somewhat: #!/usr/bin/perl
use strict; use warnings; my %H; my $v = "meh"; $H{A} ||= do { foreach my $k (keys %H) { delete $H{$k}; } $v; }; __END__ strict and warnings are optional. Having $v as a variable seems to be important, as is using $k to iterate. I assume that this bug report is going to be forwarded upstream. :-) Nicholas Clark -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]