in reply to What does the SHIFT bit do in a constructor

the one thing i don't think anybody mentioned yet explicitly is that shift shifts @_ by default.

combine this with the fact that the OO syntax (Foo::Bar->new or new Foo::Bar) automatically puts the classname at the front of the argument list, and you see what's going on.