I would guess that
my $func = "\&catch"; should really read
my $func = \&catch; as you probably want a reference to a function and not the function name as a string.
This is just a quick thought, though.
Hope this helped.
CombatSquirrel.
Entropy is the tendency of everything going to hell.