See the current Perl documentation for binmode.
Here is our local, out-dated (pre-5.6) version:
binmode - prepare binary files on old systems
Arranges for the file to be read or written in ``binary'' mode in operating systems that distinguish between binary and text files. Files that are not in binary mode have
LF sequences translated to
LF on input and
LF translated to
LF on output. Binmode has no effect under Unix; in
MS-DOS and similarly archaic systems, it may be imperative--otherwise your MS-DOS-damaged
C library may mangle your file. The key distinction between systems that need
binmode() and those that don't is their text file formats. Systems like Unix, MacOS, and Plan9 that delimit lines with a single character, and that encode that character in
"\n", do not need
binmode(). The rest need it. If
FILEHANDLE is an expression, the value is taken as the
name of the filehandle.