in reply to My perl interpreter won't even look at it. It's that bad.

Another problem this code suffers from is a Cargo-cultism from sloppy C programming -- treating return as a function call.

In Perl, the semantics of slapping parentheses around expressions is not the same as in C et al. What you get (in Perl) is a list. Having a list when you think you're getting a scalar can occassionally cause interesting problems. Even if it doesn't cause problems, it leads to unecessary object creation/destruction, which is kind of like having barnacles on the bottom of your boat.

So, lose the parentheses when you use return.