# set up some sample data, assume $#columns == $#values my @columns = qw / Standardisation_type Male_00_04 Female_85_plus /; my @values = qw / EuropeanStandard 7000 7000 /; # Dynamically build the SQL insert with place holders my $sql = "INSERT INTO Standard_population(" . join(',',@columns) . ") " . "VALUES (" . join(',', map {'?'} @columns) . ")"; my $sth = $dbh->prepare($sql) or die "Couldn't prepare query"; $sth->execute(@values);