##
#### 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);
}
####
$sth->execute(@data{@col_names});