while (my $key = $remaining_keys->next()) { ...; } #### while (my ($key, $value) = delete_first %hash) { do_stuff(\%hash, $key, $value); $subset{$key} = $value if valid($key); }