in reply to Replace new line char with br

Greetings HTTP-404,

I don't know what OS you're using, but if you're using Win32, you may need to compensate for the line feed added character. The following might help:

$post =~ s/^\r*\n$/<br>/g;

-gryphon
code('Perl') || die;

Replies are listed 'Best First'.
Re: Re: Replace new line char with br
by dvergin (Monsignor) on Aug 19, 2001 at 11:06 UTC
    gryphon, you have a couple of oversights in your regex.

    HTTP-404 appears to have multiple new-lines in $post. But your use of $ in your regex will only find the last one. To make the $ work for mid-string new-lines, you would need to use the /m modifier. And since you are attempting to use \n (and perhaps \r) for your match, the $ is superfluous to your strategy anyway.

    Also, Perl automagically hides the difference between OS's handling of new-lines. I can match \n on my windows machine with no problems. Perl pretends it's a single character and hides the ugly details from me. To put it another way; \n is an OS-compliant newline, not linefeed. So you don't need to worry about \r. Trying to match it will confuse things.

    Finally, if we wanted to depend on $ for our solution, we might go for: $post =~ s/$/<br>/mg; which is sweeter than the regex in my original post.