die($dbh->errstr);
die ist auch nichts anderes als eine Funktion. Wenn du die nicht als solche aufrufst passiert natürlich nichts.
... klappt so bei mir auch nicht:
$sth->execute() or die($dbh->errstr);
Bin ein Perl-Neuling, darum die wohl etwas unqualifizierte Anfrage...