|Keep It Simple, Stupid|
Re: Carrige Return and Line Feed in Perl.by Eliya (Vicar)
|on Mar 01, 2011 at 17:10 UTC||Need Help??|
2.Is CR the newline character for windows? and LF the newline character for linux?
\r = CR = carriage return = ASCII code 13 (decimal), 015 (octal), 0d (hex)
On Windows, the combination of those two control characters, i.e. \r\n, is used to indicate a newline, while on Linux/Unix, a single \n is used as newline.
(To simplify things, this ignores old-style Mac semantics — see the already mentioned link for details.)
4.What about Control-M, that appears at the end of windows generated files before dos2unixing them, is that character just "\r"?
See Caret Notation. More specifically, Control-M, or ^M, is the same as \r, because \r is ASCII code 13, and M is the 13th character in the alphabet.
6.I assumed that the "\n" is an LF ascii map is "\r" a CR ascii map?
Not sure what you mean by that.
7.When I used expect.pm to get some information via an ssh server hosted on a appliance, a lot of the lines returned were terminated by "\r\n", what character is that?
Generally, \r\n is a Windows newline (see above), but it's also used in some network protocols to indicate newline (aiming to be portable).
8.Is there a difference between a 'line terminator' in the terminal and in a file?
That said, as long as you do not operate across platforms, you usually need not worry about line terminator differences, because the PerlIO layer ":crlf" automatically converts newlines to and from Perl's internally used \n when reading and writing from/to file handles — in case a conversion is required, such as on Windows. I.e. (on Windows, by default), \r\n is translated to \n on input, and on output, \n is translated to \r\n. But if you need to, you can change that behavior with binmode or open. For example, to transparently read/write Windows files on Unix, you can push the :crlf layer on the respective file handle's layer stack.