Es que lo correcto es sacar el prepare fuera del bucle, ya que siempre es la misma "preparación", y hacer un execute en cada vuelta. El finish() sobra la mayoría de las veces (esto último lo dice el manual, no yo).
Código Perl:
Ver originalmy $sth = $dbh->prepare('INSERT INTO inventarios values(?,?,?,?,?,?,?,?)')
or die("Couldn't prepare statement: " . $dbh->errstr); my @id;
my ($departamento, $categoria);
my @vars;
foreach ( @data_ ) {
($departamento, $categoria) = split q{.}, $id[6]; @vars = ($id[0], $departamento, $categoria, @id[2,1,4,3,5]);
$sth->execute(@vars) or die("Couldn't execute statement: " . $sth->errstr); }
$dbh->disconnect;