#!/usr/local/bin/perl -w
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use Template;
use File::Slurp;
my $cgi = CGI->new;
# print the text/html header
print $cgi->header;
# the candidate colours
my @boxes = qw(Red Yellow Brown Green Blue Pink Black);
# the colours selected from the last time
my @selected = $cgi->param('colours');
my %params = (
boxes => [@boxes],
selected => [@selected],
script => join("",read_file($0)), # this script
);
my $template = Template->new;
$template->process(\*DATA, \%params) || die $template->error;
__DATA__
<html>
<head>
<title>Checkbox test</title>
</head>
<body>
[% FOREACH col IN selected -%]<font color="[% col %]">[% col %]</font>[% ', ' UNLESS loop.last %][% END %]<br />
<form>
[% FOREACH box = boxes %]
<input type="checkbox" name="colours" value="[% box %]" [% IF selected.grep(box).size ;"checked"; END; %]/> [% box %]<br />
[% END %]
<input type="submit" value="Submit!" />
</form>
<pre>
[% script | html %]
</pre>
</body>
</html>