in reply to Calling Madness

Right off the bat: I agree with chromatic. Don't do it.

Now that I've said that, if you aren't doing anything with the object or package (in the cases where it is invoked as an object or class method) and the rest of your argument list isn't variable, then just pull your arguments from the back end of the array.

my ($string, $hash) = (pop, pop); # Reverse order... UGLY. my ($hash, $string) = @_[-2,-1]; # Keep "normal" order. (Better) my ($w, $x, $y, $z) = @_[-4..-1]; # Range operator makes long lists ea +sy.

This avoids all the unneeded argument checking on throwaway arguments.

-sauoq
"My two cents aren't worth a dime.";