For some reason,
Many people believe that the shortest way to get arguments is either all at once or not at all. Usually i have found this not to be the case. For instance, coupling your statements with your argument pulling i get 46:
And if i couple the assignments with the return statement, i can shave off another 8:
They seem to test out correctly, but i didn't test all that extensively (engineer's test: if it works 3 times for 3 different input it must work for everything :)
update: it strikes me that i am using a personal definition that i should elaborate on slightly. i think of "pulling arguments" as using pop, shift, or @_ to take an argument out of @_ and assign it to another variable. Not doing so is using $_[$x] directly throughout.