in reply to
Stepping through a hash while modifiying its content
- If you add or delete a hash's elements while iterating over it, entries may be skipped or duplicated--so don't do that
perlfaq4#What happens if I add or remove keys from a hash while iterating over it?
- (contributed by brian d foy)
The easy answer is "Don't do that!"
If you iterate through the hash with each(), you can delete the key most recently returned without worrying about it. If you delete or add other keys, the iterator may skip or double up on them since perl may rearrange the hash table. See the entry for each() in perlfunc.