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.
An initial answer to this has already been made by
tye in the note
here.
I believe the question is asking more
why Perl IO is broken on Linux, and what can be done to work around this in the meantime.
Cheers,
Malk