I think the issue in question is that even running over a file, finding newlines, and forming lines, in the same way that readline should do, works faster in linux as a read of a block of data and subsequent line formation than as a readline.
Perl IO is broken on Linux, and what can be done to work around this in the meantime.