CGI::FormBuilder::Template::HTC example

NAME:
COLOR:
SIZE:42

## Script: examples/form_htc.pl

## The Script:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use Data::Dumper;
    use blib;
    use CGI::FormBuilder;

    use Fcntl qw(:seek);

    my ($template, $perlcode);
    {
        local $/;
        $template = <DATA>;
        seek DATA, 0, SEEK_SET;
        $perlcode = <DATA>;
    }

    my $form = CGI::FormBuilder->new(
        action   => 'TEST',
        title    => 'TEST',
        fields    => [qw/name color email/],
        submit   => [qw/Update Delete/],
        reset    => 0,
        template => {
            scalarref => \$template,
            type => 'HTC',
            variable => 'form',
            tagstyle => [qw(-classic -comment -asp +tt)],
            data => {
                script => $perlcode,
                template => $template,
                script => $0,
                perlcode => $perlcode,
            },
        },
        values   => { color => [qw/yellow green orange/] },
        validate => { color => [qw(red blue yellow pink)] },
    );
    my $mod = {
        color => {
            options => [[qw/red Red/],[qw/green Green/],[qw/ blue Blue/]],
            type => 'select',
        },
        size  => { value   => 42 }
    };
    while ( my ( $f, $o ) = each %{$mod} ) {
        $o->{name} = $f;
        $form->field(%$o);
    }
    my $out = $form->render;
    print "$out\n";

    __DATA__
    <html><head><title>CGI::FormBuilder::Template::HTC example</title></head>
    <body>
    [%= form.jshead%]
    [%= form.start%]
    NAME:[%= form.field.name.field%]<br>
    COLOR:[%= form.field.color.field %]<br>
    SIZE:[%= form.field.size.value%]<br>
    [%= form.submit%]<br>
    [%= form.end%]

    <h2>Script: [%= .script %]</h2><p>
    <hr>
    <h2>The Script:</h2>
    <pre>
    [%= perlcode escape=html %]
    </pre>
    </body></html>