my @clauses;
push @clauses, 'column1' if defined $var1;
push @clauses, 'column2' if defined $var2;
push @clauses, 'column3' if defined $var3;
my $query = "select * from table";
if (@clauses) {
$query .= " where " . join ' and ', map {"$_ = ?"} @clauses
}
my $result = $dbi->selectall_arrayref($query, {}, grep {defined} $var1
+, $var2, $var3);