my $sql = "INSERT INTO db ("; $sql .= join", ", keys( %{$ref} ); $sql .= ") VALUES ("; $sql .= join", ", map {"?"} (1 .. scalar(values(%$ref))); $sql .= ")"; my $sth = $dbh->prepare($sql) or die DBI::errstr; $sth->execute(map {$dbh->quote($_)} values %$ref) or die DBI::errstr;