use 5.006;
# ABSTRACT: minimal try/catch with proper preservation of $@
-our $VERSION = '0.25';
+our $VERSION = '0.27';
use strict;
use warnings;
*_HAS_SUBNAME = ($su || $sn) ? sub(){1} : sub(){0};
}
-my @_finally_guards;
+my %_finally_guards;
# Need to prototype as @ not $$ because of the way Perl evaluates the prototype.
# Keeping it at $$ means you only ever get 1 sub because we need to eval in a list
# this should really be a function scope lexical variable instead of
# file scope + local but that causes issues with perls < 5.20 due to
# perl rt#119311
- local $_finally_guards[0] = [
+ local $_finally_guards{guards} = [
map { Try::Tiny::ScopeGuard->_new($_) }
@finally
];
# destructor overwrote $@ as the eval was unwinding.
if ( $failed ) {
# pass $error to the finally blocks
- push @$_, $error for @{$_finally_guards[0]};
+ push @$_, $error for @{$_finally_guards{guards}};
# if we got an error, invoke the catch block.
if ( $catch ) {
package # hide from PAUSE
Try::Tiny::ScopeGuard;
- use constant UNSTABLE_DOLLARAT => ($] < '5.013002') ? 1 : 0;
+ use constant UNSTABLE_DOLLARAT => ("$]" < '5.013002') ? 1 : 0;
sub _new {
shift;
L<http://web.archive.org/web/20100305133605/http://nothingmuch.woobling.org/talks/yapc_asia_2009/try_tiny.yml>
-=head1 VERSION CONTROL
-
-L<http://github.com/doy/try-tiny/>
-
=cut
-