binmode causes the file to be read (still line by line) but with exactly the binary values of that line. So, for example, without binmode, a line ending in Lf is read as ending with CrLf and with binmode it will show as ending in Lf. Same goes for lines ending in Cr only or CrLf; without it, line ends all com out the same. With it they come out as they were.