use strict;
use CGI;
use HTML::Template;
my $q = CGI->new();
my $template = HTML::Template->new(
filename => 'some.tmpl',
associate => $q,
);
# assign params to $template according to user input/validation
print $q->header, $template->output;
####
use strict;
my $q = My::CGI->new;
print $q->h1('hello world'),$/;
package My::CGI;
use base qw(CGI);
sub h1 { "<42>$_[1]42>" }
####
perl -MCGI=foo -le "print foo{bar=>baz},qux"