in reply to How's your Perl?

Here's a new solution for question 3a. This is not strict in the sense that you have to turn off strict for the set-up code to work. However, the actual test \$foo->[1] == \$foo->{1} runs under strict, unlike in my original symbolic ref solution.

I think that this solution differs from all the solutions given so far, so I submit it even though this puzzle is now quite old.

$R = "Regexp::"; *{"$R(\@{}"} = sub { &{sub{\@_}}(2,$t{1}) }; *{"$R(%{ +}"} = sub { \%t }; *{"$R()"} = sub {}; ${"${R}OVERLOAD"}{$(}--; our $ +foo = qr/a/; use strict; \$foo->[1] == \$foo->{1} or die;

And for super-search purposes, this solution uses operator overloading on the Regexp package.