You are viewing the version of this documentation from Perl 5.005_03. View the latest version

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 CR LF sequences translated to LF on input and LF translated to CR LF on output. Binmode has no effect under many sytems, but 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 C as "\n", do not need binmode(). The rest may need it. If FILEHANDLE is an expression, the value is taken as the name of the filehandle.

If the system does care about it, using it when you shouldn't is just as perilous as failing to use it when you should. Fortunately for most of us, you can't go wrong using binmode() on systems that don't care about it, though.