in reply to Fighting sub foo($;$$)

Is there any chance that I could tell perl to ignore my past foolishness, and just forget that there is '($:$$)'?

For individual calls, you can bypass prototypes by calling the sub with the old ampersand syntax. See also Prototypes. If however this sub is being called in lots of places, instead of adding a bunch of &s, I would strongly recommend some refactoring of the code instead.

package Somename; use Data::Dumper; foo(1,2,3,4,5); sub foo($;$$) { print Dumper(\@_) } package main; &Somename::foo(1,2,3,4,5); # works

I should mention of course that a sub with a prototype ($;$$) and then shifting five arguments is quite a strange piece of code.