use CGI; use DBI; my $cgi = ...; my $dbh = ...; my $sql = "SELECT "; push @field, 'age' if (my $age = $cgi->param('age')); push @field, 'gender' if (my $age = $cgi->param('gender)); if ($cgi->param('weight_constraint')) { push @where, sprintf 'weight %s', $cgi->param('weight_constaint'); } my $sql = sprintf "SELECT %s FROM user WHERE %s;", join ',' @field, join ' and ', @where; $dbh->selectall_arrayref($sql);