... my $form = CGI->new(); my $db_handle = DBI->connect(...); my @fields = qw(f_1 f_2 f_3 f_4 f_5); my @query_parts; foreach my $field (@fields) { if ( defined $form->param($field) ) { push @query_parts, "$field = " . $db_handle->quote($form->param($field)); } } if ( ! scalar(@query_parts) ) { # do something else return; } my $query = "SELECT * FROM Table_Name WHERE "; $query .= join " AND ", map { "( $_ )" } @query_parts;