I found this code snipit but it doesn't quite work:
my @records = ( ['value1', 'value2'], ...) ;
my $values = join ", ", ("( ?, ? )" x @records);
my $query = "INSERT INTO $table (field1, field2) VALUES $values";
my $sth = $dbh->prepare($query);
$sth->execute(map { @$_ } @records);
I modified it a bit to get it to work (below). The above code doesn't set the $values variable correctly, that join doesn't work.
my @list;
foreach (@records) {
push(@list,"( ?, ?, ? )");
}
my $values = join(',', @list);
That works although not as cool. I've never seen a list created quite like this before, and I am curious:
join ", ", ("( ?, ? )" x @records);
Can someone correct that bit to show what the original author was trying to do?
UPDATE
I think I confused this post by leaving the MySQL stuff in there (and choosing a poor title). This is actually a Perl question, but I didn't state it clearly. What I should have asked is how to properly use the repetition operator in a join to produce a certain string. The "x" operator use is incorrect in my example (needs a list on both sides, the right paren is in the wrong place).
Mr. Muskrat (below) answered my question (he also showed the broken string with the fixed string).