my %memberRecord; ... Populate %memberRecord ...; my @columns = keys %memberRecord; my @values = values %memberRecord; my $sqlStatement = do { local $" = ", "; my @qms = ('?') x @columns; "INSERT INTO $tableName (@columns) VALUES (@qms)"; }; ... my $sth = $dbh->prepare($sqlStatement); $sth->execute(@values);