One PM has a filehandle read, but can this be shifting it just by being included in a "use"?
It can and it will if you use the while (<>) construct directly in the main block of your module or in a subroutine that gets called by the main block.
Keep in mind that use Module; actually runs all the code in that module immediately. Unless you're doing something clever, like setting up the module's interface, it's bad form to have arbitrary code in a module. Normally, a module should only set up an API, not run all kinds of code immediately.
| [reply] [d/l] [select] |
Pure OO, except for the script invoking the controller PM.
Not really understanding how this relates to my comment. In a "Pure OO" module, you could still have a spurious lonely shift.
Since @ARGV is global, it is available to all PMs, but better design dictates not referencing it within deeper OO code.
Yep, certainly! So what?
One PM has a filehandle read, but can this be shifting it just by being included in a "use"?
No, it can't. I suspect it's something else. Still hard to say without seeing any code. Of course the actual one may be too large to be posted here. You should try to trim it down to a bare minimum still exhibiting the problem and while doing so you may even find out yourself at which point in the actual code the shift occurs.
| [reply] |