http://qs1969.pair.com?node_id=286566


in reply to Re: Re: View The HTML ???
in thread View The HTML ???

Update: I'm a klutz.. don't forget to see asarih's reply below.

FWIW, you need to add s/&/&/g; to your substitutions for a minimal escaping solution.

Also, you must terminate your entities with a semicolon - it's < and not &lt. (Well, the latter is acceptable in some cases under SGML, but don't go there unless you like headaches.)

A few style suggestions on your code - try something like this:

s/</&lt;/ for @HTML; s/>/&gt;/ for @HTML; s/&/&amp;/ for @HTML; print '<textarea>', join("", @HTML), '</textarea>';
Much easier on the eyes, no? Anyway, as I've already said:
use CGI qw(:standard); print textarea('', escapeHTML(join '', @HTML));

Makeshifts last the longest.

Replies are listed 'Best First'.
Re: Re^3: View The HTML ???
by asarih (Hermit) on Aug 26, 2003 at 02:58 UTC
    If you don't want to use CGI.pm, don't forget /g regex modifier, and remember to substitute the ampersands first, then angle brackets.
Re: Re^3: View The HTML ???
by halley (Prior) on Aug 26, 2003 at 16:18 UTC
    If you're not going to use the CGI or other already-invented wheels, do make sure you get your ordering right, or you'll end up with &amp;lt;BR&amp;gt;&amp;nbsp; all over the place.
    for (@HTML) { s/&/&amp;/g; s/</&lt;/g; s/>/&gt;/g; }

    If you really wanted to use the map method, you don't need intermediate variables for each possible step. @finished = map { ... } map { ... } map { ... } @originals works just fine. (The last mentioned map is performed first.)

    --
    [ e d @ h a l l e y . c c ]