UR
view release on metacpan or search on metacpan
lib/UR/Context/Transaction.pm view on Meta::CPAN
if (wantarray) {
return ($result, $eval_error);
} else {
return $result;
}
}
# eval function takes a block (&) sort of like CORE::eval
# eval will rollback on a caught die
sub eval(&) {
my $is_failure = sub {
my ($result, $eval_error) = @_;
return $eval_error;
};
return eval_or_do($is_failure, @_);
}
# do function takes a block (&) sort of like CORE::do
# do will rollback on a false result as well as before re-throwing a caught die
sub do(&) {
my $is_failure = sub {
my ($result, $eval_error) = @_;
return !$result || $eval_error;
};
my ($result, $eval_error) = eval_or_do($is_failure, @_);
if ($eval_error) {
croak $eval_error, "\t...propogated";
}
return $result;
}
lib/UR/Util.pm view on Meta::CPAN
use warnings;
use strict;
require UR;
our $VERSION = "0.47"; # UR $VERSION;
use Cwd;
use Data::Dumper;
use Clone::PP;
use Config;
use Module::Runtime v0.014 qw(module_notional_filename);
sub on_destroy(&) {
my $sub = shift;
unless ($sub) {
Carp::confess("expected an anonymous sub!")
}
return bless($sub, "UR::Util::CallOnDestroy");
}
# used only by the above sub
# the local $@ ensures that we this does not stomp on thrown exceptions
sub UR::Util::CallOnDestroy::DESTROY { local $@; shift->(); }
( run in 0.942 second using v1.01-cache-2.11-cpan-49f99fa48dc )