in reply to Angle operator

The while( <> ) { loop reads more data from STDIN or the file(s) in @ARGV. If you observe different behaviour, then most likely, the data from the two locations was consumed in a previous loop in the old script and is now not consumed in the new script.

A tedious but workable approach IMO is to inspect all the previous loops that consume input from STDIN, or @ARGV, by editing down (a copy of) the script until only the offending loops (or statements leaving these loops) remain.