my $dbh = $base::dbh; # get a database handle eval { # lots of inserts, updates, etc... }; if ($@) { my $err = $@; eval { $dbh->rollback }; # display formatted errors $base::showerrors( ($base::debug ? $err : "database related error"), ($@ ? " error performing rollback\n" : " rollback performed successfully\n") ); } #### sub dbtry (&@) { my ($dbtry, $dbcatch) = @_; local $dbh = $base::dbh; eval { local $_ = $dbh; &$dbtry }; if($@) { local $_ = "dbcaught:"; chomp $@; $_ .= ($base::debug) ? " $@" : " database related error"; eval { $dbh->rollback }; $_ .= ($@ ? " Error Performing Rollback\n" : " Rollback Performed Successfully\n"); &$dbcatch; } } sub dbcatch (&) { $_[0] } #### dbtry { # lots of inserts, updates, etc... } dbcatch { $base::showerrors("error: $_"); }