in reply to Re: CGI/MySQL and the vanishing \n
in thread CGI/MySQL and the vanishing \n

Yes I am using
print "Content-type:text/html\n\n";
I was expecting newlines in the file to act as newlines in the browser.
What does PRE mean ? I will try puttin PRE as a tag before
I print out $_
cheers

Replies are listed 'Best First'.
Re: Re: Re: CGI/MySQL and the vanishing \n
by pfaut (Priest) on Feb 04, 2003 at 16:35 UTC

    If you are displaying plain text, use "Content-type: text/plain\n\n" instead. Otherwise, I would recommend finding an HTML primer.

    --- print map { my ($m)=1<<hex($_)&11?' ':''; $m.=substr('AHJPacehklnorstu',hex($_),1) } split //,'2fde0abe76c36c914586c';
Re: Re: Re: CGI/MySQL and the vanishing \n
by tachyon (Chancellor) on Feb 04, 2003 at 22:12 UTC
    In HTML all newlines and multiple spaces are treated as a single space for display purposes. Thus:
    <p>This will look like this does below

    This will look like this does below

    The <PRE> tag means preformatted so

    <PRE> This retains the newlines </PRE>
    This
    retains
    the
    newlines
    

    You badly need to learn some HTML. You also need to escape the HTML special characters < > "" &

    sub escapeHTML { my ( $escape, $text ) = @_; return '' unless defined $escape ; $escape =~ s/&/&amp;/g; $escape =~ s/"/&quot;/g; $escape =~ s/</&lt;/g; $escape =~ s/>/&gt;/g; # these next optional escapes make text look the same when rendere +d in HTML # without wrapping in <pre> tags if ( $text ) { $escape =~ s/\t/ /g; # tabs to 4 sp +aces $escape =~ s/( {2,})/"&nbsp;" x length $1/eg; # whitespace e +scapes $escape =~ s/\n/<br>\n/g; # newlines to +<br> } $escape =~ s/([^\000-\177])/'&#' . (sprintf "%3d", ord $1) . ';'/e +g; return $escape; }

    So you need to do something like

    print "Content-type: text/html\n\n"; print "<pre>\n"; for (@data) { print escapeHTML($_); } print '</pre>'; sub escapeHTML { ..... }

    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print