If your getting that high throughput I'd venture a guess that speed is not your issue. Is your script running on windows? If you are running on Windows you will almost cretanly need binmode(filehandle). I didn't see it in the code you posted. With out it Perl will open the file assuming that it is text and it will likely corrupt it as it's read.