my @all_fields = qw(ort mv_id mol_id); my @def_fields = (); foreach (@all_fields) {   push @def_fields, $_ if defined $params{$_}; } if (@def_fields) {   my $sql = "INSERT INTO recherche (" . join(',', @def_fields) . ") VALUES (" . join(',', '?' x scalar @def_fields) . ")";   my $sth = $dbh->prepare($sql) or die $dbh->errstr();   $sth->execute(@params{@def_fields}) or die $dbh->errstr(); }