Leaving all this class constructor stuff alone :
if you use shift without an array as argument it will shift from @_ (which is the array of arguments passed to a sub) when called in a sub or from @ARGV (which is the array of arguments passed to the perl program) when called from the main program body.
Thus :
myshift("testme");
sub myshift{
print shift;
#same result
print shift @_;
}
Jorg
"Do or do not, there is no try" -- Yoda