my @keys = keys %hash; my $stmt = qq/INSERT INTO books ( / . join(',', @keys) . qq/) VALUES (/ . join(',', ('?') x @keys) . qq/)/; my $sth = $dbh->prepare($stmt); #... $sth->execute(@hash{@keys});