in reply to Perl level control of hash iterators

You can only achieve that by writing your own iterators. The documentation for each clearly states:
There is a single iterator for each hash, shared by all each, keys, and values function calls in the program; it can be reset by reading all the elements from the hash, or by evaluating keys HASH or values HASH . If you add or delete elements of a hash while you're iterating over it, you may get entries skipped or duplicated, so don't.