in reply to DBI insert statement

I still like my suggest at Re: DBI insert statement - Make sure that you have the correct SQL from the DB command line. That takes Perl "out of the equation". After that works, the issue becomes how to make Perl do what you already know works.

I looked at other answers in this thread. You keep saying that "insert doesn't work". Debug 101 to me would be "what the heck does insert say that it did?

For a non-SELECT statement, execute returns the number of rows affected, if known. If no rows were affected, then execute returns "0E0", which Perl will treat as 0 but will regard as true. Note that it is not an error for no rows to be affected by a statement. If the number of rows affected is not known, then execute returns -1.
$sth_insert->execute(@insert);
returns a value. What is it?
my $rv = $sth_insert->execute(@insert); print "insert says: $rv/n";