Your output is not set to handle binary data - it's being translated to ascii when it's sent.

Try adding this - I haven't fiddled with mod_perl in a long time but this should work...

Code:
open FN,$file;
binmode FN;
read FN, $buffer, $length;

#NEW LINE
binmode STDOUT;

print $buffer;
close FN;