Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (Debian-5.0)
Apropos / Subsearch:
optional field

HTML::AsSubs(3pm)     User Contributed Perl Documentation    HTML::AsSubs(3pm)

       HTML::AsSubs - functions that construct a HTML syntax tree

        use HTML::AsSubs;
        $h = body(
                  h1("This is the heading"),
                  p("This is the first paragraph which contains a ",
                    a({href=>'link.html'}, "link"),
                    " and an ",
                    img({src=>'img.gif', alt=>'image'}),
        print $h->as_HTML;

       This module exports functions that can be used to construct various
       HTML elements. The functions are named after the tags of the correpond-
       ing HTML element and are all written in lower case. If the first argu-
       ment is a hash reference then it will be used to initialize the
       attributes of this element. The remaining arguments are regarded as

       For a similar idea (i.e., it's another case where the syntax tree of
       the Perl source mirrors the syntax tree of the HTML produced), see
       HTML::Element's "new_from_lol" method.

       For what I now think is a cleaner implementation of this same idea, see
       the excellent module "XML::Generator", which is what I suggest for
       actual real-life use.  (I suggest this over "HTML::AsSubs" and over
       "CGI.pm"'s HTML-making functions.)

       This module was inspired by the following message:

        Date: Tue, 4 Oct 1994 16:11:30 +0100
        Subject: Wow! I have a large lightbulb above my head!

        Take a moment to consider these lines:

        %OVERLOAD=( '""' => sub { join("", @{$_[0]}) } );

        sub html { my($type)=shift; bless ["<$type>", @_, "</$type>"]; }

        :-)  I *love* Perl 5!  Thankyou Larry and Ilya.

        Tim Bunce.

        p.s. If you didn't get it, think about recursive data types: html(html())
        p.p.s. I'll turn this into a much more practical example in a day or two.
        p.p.p.s. It's a pity that overloads are not inherited. Is this a bug?

       The exported link() function overrides the builtin link() function.
       The exported tr() function must be called using &tr(...) syntax because
       it clashes with the builtin tr/../../ operator.

       HTML::Element, XML::Generator

Private Functions

       The _elem() function is wrapped by all the html 'tag' functions. It
       takes a tag-name, optional hashref of attributes and a list of content
       as parameters.

perl v5.8.8                       2006-11-15                 HTML::AsSubs(3pm)