Using HTML::Template to do this isn't too extreme, though it is definitely not as pretty-looking as CGI.pm's html-generating methods. Chances are I'd still go the templating route, just because I'm now very used to doing so.
#!c:/perl/bin/perl -w
$|++;
use strict;
use CGI::Simple;
use HTML::Template;
my $cur_month = 'November';
my $count = 0;
my $months = [
map { [ $count++, $_ ] } qw(
January February March April May Jun July
August September October November December
)
];
my $q = CGI::Simple->new;
my $t = HTML::Template->new(filehandle => *DATA);
$t->param(
url => $q->self_url,
months => [
map { {
month_num => $_->[0],
month_name => $_->[1],
selected => ($cur_month eq $_->[1] ? 'SELECTED' : '')
} } @$months
]
);
print $q->header, $t->output;
exit;
__DATA__
<html>
<head>
<title>test</title>
</head>
<body>
<form action="<TMPL_VAR NAME="url" ESCAPE="HTML">">
<select name="month">
<TMPL_LOOP NAME="months">
<option
value="<TMPL_VAR NAME="month_num" ESCAPE="HTML">"
<TMPL_VAR NAME="selected" ESCAPE="HTML">
><TMPL_VAR NAME="month_name" ESCAPE="HTML"></option>
</TMPL_LOOP>
</select> <input type="submit" value="Continue" />
</form>
</body>
</html>
|