my $fields = join ', ', keys %{$form->field}; my @values = values %{$form->field}; my $placeholders = join ',', ('?') x @values; my $sql = qq| INSERT INTO mytable ($fields) VALUES ($placeholders); |; my $st = $dbh->prepare($sql); $st->execute(@values);