Perhaps you missed <http://www.stonehenge.com/merlyn/LinuxMag/col30.html>, putting an iterator behind a tied hash, giving you "each" as a single iteration, or "keys" to get them all. Yet Another Way. :)
OK, well if you're using a hash to iterate, then it's perhaps a different type of iterator. In Maptastic there is a map_each(&@) method, which sets @_ to (each %hash) in the block. This would work with your tied hash approach, as the input would be ->isa("HASH"). However, I suppose that using the scalar form of `each', returning just the key, would be the appropriate thing to use for map variants that expect singular items. So we've got: Blessed objects: $_->__next__ (Object::Iterate) $_->get_next (SPOPS-style) $_->next (Tangram::Cursor, File::Iterator, Data::Iterator::EasyObj, etc) Unblessed: $_->() (MJD-style, his hybrid blessed closures can be expected to ->can() one of the above) scalar(each %$_) Hmm, for completion, what about arrays? I can see two possible semantics for arrays as iterators; shift @$_ while (@$_) $_->[$i++] while (exists $_->[$i]); I think the latter is better, though it doesn't work with sparse arrays. Caveat emptor? -- Sam Vilain, [EMAIL PROTECTED] Things are more like they are now than they ever were before. DWIGHT D EISENHOWER