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