##
my %foo;
@foo{qw/ foo bar baz /} = 1 .. 3;
my @keys = keys %foo;
while (%foo) {
my $key = shift @keys;
my $val = delete $foo{$key};
printf "%s => %s is gone.\n", $key, $val;
}
####
while (my ($key, $val) = each %hash) {
delete $hash{$key};
printf "%s => %s is gone.\n", $key, $val;
}