in reply to Re: Trouble with newlines
in thread Trouble with newlines

Apparently a "\n" can be multiple characters on the way out
It's actually documented. The perlport says something about this newline:
In most operating systems, lines in files are terminated by newlines. Just what is used as a newline may vary from OS to OS. Unix traditionally uses "\012", one type of DOSish I/O uses "\015\012", and Mac OS uses "\015".

Perl uses "\n" to represent the "logical" newline, where what is logical may depend on the platform in use. In MacPerl, "\n" always means "\015". In DOSish perls, "\n" usually means "\012", but when accessing a file in "text" mode, STDIO translates it to (or from) "\015\012", depending on whether you're reading or writing. Unix does the same thing on ttys in canonical mode. "\015\012" is commonly referred to as CRLF.


Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

Replies are listed 'Best First'.
Re^3: Trouble with newlines
by RL (Monk) on May 12, 2007 at 15:53 UTC

    The line endings are extremely annoying if one is on a dual boot box (Win/*nix) and trys to tweak CGI supposed to run on Apache/*nix as well as on IIS/Win.

    Whenever one writes textmode *\n* to a file on booted Win and later boots the other OS reading the same file on *nix it ends up to be \r\n.
    Extremely annoying imho. Sometimes one forgets about it and then wonders why things don't work as expected .

      Well, you're not alone :-). Here, comments from inside Lincoln Stein's CGI.
      # Define the CRLF sequence. I can't use a simple "\r\n" because the m +eaning # of "\n" is different on different OS's (sometimes it generates CRLF, + sometimes LF # and sometimes CR). The most popular VMS web server # doesn't accept CRLF -- instead it wants a LR. EBCDIC machines don't # use ASCII, so \015\012 means something different. I find this all # really annoying.

      Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!