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


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

Yea right now I just have a whole list of filters
@HTMLUN2 = map { s/</&lt/; $_ } @HTMLUN1; @HTML = map { s/>/&gt/; $_ } @HTMLUN2; print <<HTML; <textarea>@{[join("",@HTML)]}</textarea> HTML

I am looking for the command that does all the stuff for me, so i don't need to map { everything.

Replies are listed 'Best First'.
Re^3: View The HTML ???
by Aristotle (Chancellor) on Aug 26, 2003 at 02:52 UTC

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

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

    Also, you must terminate your entities with a semicolon - it's &lt; 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.

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