use Data::Dumper; ... for (;;) { warn "Next iteration:"; warn Dumper \%timings; foreach my $item (sort (keys %timings)) { warn "Processing [$item]"; do_stuff(); # changes data, not keys, no deletes } }