Isn't using the Tie::Hash::Regex module just pushing the loop under the covers? I dunno, I didn't write it, although if it's a pure Perl module then I would suspect that's how it is implemented. Personally I'd like to see that functionality available in perl itself rather than as a tie'd module, though more for speed than for convenience. After all, a standard hash lookup is remarkably faster than a foreach over a hash (or at least it was last time I compared the two methods with a tie'd DBM of about 50,000 entries).
Update: a brief perusal of the
code shows a combination in the FETCH subroutine of for and qr to prevent recompilation of the regex. The real meat of the code is:
my $key = qr/$key/;
/$key/ and return $self->{$_} for keys %$self;