in reply to Line by line buffered read
But I it appears you aren't actually doing anything with the file? Why not just copying it?
Or if you just want to work with the text and don't need to parse the lines of data, there is no need to split the $buffer. You're splitting on \n then basically putting them back in with the print?
Solutions depend on what you are actually doing with the $buffer
You could for example do a join "\n",@lines though I think you'll have to check to see if $buffer ended in /\n\z/
Or you could just do a $buffer.=<$fh> keeping in mind that if you combine this with the previous that you'll want to output a terminating \n
Or was this just to try and focus on the command you think is the problem? I have killed a couple servers when using while(<>) because of all the calls to the server, got yelled at by some IT peeps cause I was making some many calls to the server for lines of data.