use DBI;
use CGI qw(param);
use Template;
my $dbh = DBI->connect( ... );
my $state_id = param('state');
my $states = $dbh->selectall_arrayref('
SELECT id,name,
IF (id = ?, 1, 0) AS selected
FROM state
',{Slice => {}}, $state_id);
my $tt = Template->new;
$tt->process(\*DATA, {states => $states}) || die $tt->error();
__DATA__
[% BLOCK option %]
[% END %]