Perhaps you need to elaborate on your problem? The key 13 and its value are being removed. However, why need yo do it in the for loop? Wouldn't it be simpler to remove it up front? Consider:
use warnings; use strict; my %test = (11 => "reagen", 26 => "daniel", 13 => "joe"); delete $test{13}; print "$_ :: $test{$_}\n" for sort keys %test;
which prints:
11 :: reagen 26 :: daniel
If you need to iterate over the hash entries, manipulate them in some fashion that may depend on other values or keys, then do something with the result you really need two loops. Consider:
use warnings; use strict; my %test = (11 => "reagen", 26 => "daniel", 13 => "joe"); for (sort keys %test) { delete $test{$_ - 13} if exists $test{$_ - 13}; } print "$_ :: $test{$_}\n" for sort keys %test;
Prints:
11 :: reagen 26 :: daniel
In reply to Re: delete hash key while hash in use
by GrandFather
in thread delete hash key while hash in use
by rsiedl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |