in reply to Re: Re: replacing /n
in thread [untitled node, ID 153717]

Actually I've taken to using s/\r?\n/
/g lately.

That will handle Dos/Windows and Unix-like linebreaks, but not Macintosh linebreaks.

s/\r\n?|\n/<br>/g; # Actually, this one's better: s/\015\012?|\012/<br>/g;

U28geW91IGNhbiBhbGwgcm90MTMgY
W5kIHBhY2soKS4gQnV0IGRvIHlvdS
ByZWNvZ25pc2UgQmFzZTY0IHdoZW4
geW91IHNlZSBpdD8gIC0tIEp1ZXJk

Replies are listed 'Best First'.
Re: Re: Re: Re: replacing /n
by Kanji (Parson) on Mar 23, 2002 at 17:39 UTC
    # Actually, this one's better: s/\015\012?|\012/<br>/g;

    Having dealt almost exclusively with Unix(like)? and DOS(ish)? environments, I always forget about the portability of \r and \n which is why Juerd points to the more explicit \015 and \012 as a better solution.

    To quote from Writing Portable Perl (perlport)...

    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.

        --k.