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

Actually I've taken to using s/\r?\n/<br>/g lately. Data from textareas on IE seems to come in with the \r\n combo. But this regexp works right either way.

-pete
"I am Jack's utter lack of disbelief"

Replies are listed 'Best First'.
Re: Re: Re: replacing /n
by Juerd (Abbot) on Mar 23, 2002 at 14:50 UTC

    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
    

      # 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.


Re: Re: Re: replacing /n
by tradez (Pilgrim) on Mar 23, 2002 at 14:21 UTC
    Actually, and correct me if I am wrong on this, but I believe the \n matches \r carriage returns as well as just simple newlines in perl 5. Could be wrong, but I think I am not :).

    Tradez
    "Never underestimate the predicability of stupidity"
    - Bullet Tooth Tony, Snatch (2001)
      I don't believe so, only because I just had to change a s/\n//g to a s/\r?\n//g in something I was developing. Although I could be wrong. I have not done any imperical tests and I don't claim to be an expert on the subject.
      Maybe one of the real experts can chime in with a definitive answer?

      -pete
      "I am Jack's utter lack of disbelief"