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; }