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