my @clauses; my @params; while (my ($k, $v) = each %hash) { push @clauses, "$k = ?"; push @params, $v; } my $query = "SELECT row_id FROM Table WHERE " . join(" AND ", @clauses);