while (my ($key, $value) = each %hash) { print $key, "\n"; delete $hash{$key}; # This is safe }