Have you tried using a custom Perl solution for this? Graham
Barr's Error module (direct doc link) lets you use standard try and catch
semantics for exception handling. I've not used it, because I've
always just stuck w/ eval, because it works for me. :)

You might also take a look at Exception::Class, a base exception
class on which you can base any exceptions your system wishes
to throw.

You also wrote:

> Worse, perl's sub routine simplicity of having subroutines
> take a variable number of arguments ...