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


in reply to View The HTML ???

What "text box"? And are you processing the text (converting > to >, etc.) before calling Perl's print?

I guess CPAN is a start.

Replies are listed 'Best First'.
Re: Re: View The HTML ???
by einerwitzen (Sexton) on Aug 26, 2003 at 02:34 UTC
    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.

      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 ]