On Wed, Aug 23, 2006 at 04:10:32PM -0700, Larry Wall wrote: > Yes, that should work eventually, given that hypers are supposed to stop > after the longest *finite* sequence. In theory you could even say > > my %trans = ('a'..*) »=>« ('?' xx *); > > but we haven't tried to define what the semantics of a lazy hash would be...
That's a rather large hazard. %trans{$key} would run until the lazy hash is extended far enough to determine whether $key is ever matched as a key - and that could easily mean trying forever. So, it is only safe to use the hash for keys that you *know* are in the domain; or, if the lazy key generation is simple enough, keys that you *know* can be excluded in a finite amount of time. (I'm assuming that 1 ~~ any( 5..* ) will be smart enough to return false.) --