This is the way I do this in a program I have. It handles the case that the first, i.e. blank value is selected when nothing is set beforehand...
### Execute the region query
$sth->execute()
or dienice("585 Couldn't execute statement: " . $sth->errstr);
print qq!<TR><TD ALIGN="RIGHT">SC region:<SELECT NAME="reg_name">!
+;
print qq!<OPTION VALUE=""!;
print qq! SELECTED! unless ($REG_NAME);
print qq!>ALL REGIONS</OPTION>!;
while (my @regions = $sth->fetchrow_array()) {
print qq!<OPTION VALUE="$regions[0]"!;
print qq! SELECTED! if ($regions[0] eq $REG_NAME);
print qq!>$regions[0]</OPTION>\n!;
}
print qq!</SELECT></TD></TR>!;
-- I'm a solipsist, and so is everyone else. (think about it)