my $dbh = DBI -> connect ($dsn, $user, $pwd, {RaiseError => 1, PrintError => 0, AutoCommit => 0}) or die "Failed to connect: $DBI::errstr\n"; die "Unsetting autocommit failed\n" if $dbh -> {AutoCommit}; eval { my $sth = $dbh -> prepare ($sql); $result = $sth -> execute (@bind); } if ($@) { $dbh -> rollback; die "Database action failed: $@\n"; } else { $dbh -> commit; }