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] }