#### or with placeholders: my(@col_names, $sth); { local $" = ','; @col_names = keys %data; my $val_spec = join ',', ('?') x @col_names; my $sql = "insert into my_table (@col_names) values ($val_spec)"; $sth = $dbh->prepare($sql); }