http://www.perlmonks.org?node_id=1040958


in reply to Writing PDF binary file from stream yields malformed PDF

The problem here is that you are using readline() on a binary file.

You are relying on the fact that many binary files happen to contain bytes that look like line ends.

And using for with a file handle means you are slurping the whole file into a list.

And if the file contains (say) a lot of packed binary integers, it could mean that you are reading and writing the file in a gazillion iddy-biddy chunks.

You say you've tried sysread and syswrite but don't show any code, or how the results failed -- ie. did you compare the input and output files?

Your best bet would be to replace the read/write loop above with something like:

open OUT ... { local $\; my $buffer; while( read( STDIN, $buffer, 4096 ) ) { print OUT $buffer; } } close OUT;

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.