in reply to ARGV array getting shifted
You'll need to provide some short code examples for us to be much help. That being said, typically the first argument to a method is the instance object itself ( aka $self or this ) . Is that maybe tripping you up?
For example, if you build an OO module, but call it as a function and not an object method you may well be shifting off your first argument to the method in your own code.
Also, @ARGV is only used for getting commandline arguments, not when pulling in arguments to functions or method calls.