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); #### my @list; foreach (@records) { push(@list,"( ?, ?, ? )"); } my $values = join(',', @list); #### join ", ", ("( ?, ? )" x @records);