use DBI; use HTML::Template; use CGI qw(:standard); my $dbh = DBI->connect( qw(DBI:vendor:database:host user pass), {RaiseError=>1}, ); my $states = $dbh->selectall_arrayref(' select id,name from state order by name ',{Slice => {}}); my $tmpl = HTML::Template->new(filehandle => \*DATA); $tmpl->param(states => $states); print header,$tmpl->output; __DATA__

#### $_->{id} == param('state') and $_->{sel} = 1 for @$states; #### #### ... beginning same as before ... my $states = $dbh->selectall_arrayref( ... ); my $tmpl = HTML::Template->new(filehandle => \*DATA); $tmpl->param(states => scrolling_list( -name => 'states', -values => [ map $_->{id}, @$states ], -size => 12, -multiple => 'why not', -labels => { map {$_->{id} => $_->{name}} @$states }, ), ); print header,$tmpl->output; __DATA__