The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package # hidden from PAUSE indexer
Perl6::Try;
our $VERSION = '0.000001';

use 5.014; use warnings;

use Keyword::Declare;
use Carp;

sub import {
    keyword try (Block $block) {{{
        { my $CATCH; eval { <{$block->reline}> 1 } // do{ my $error = $@; $CATCH->($error) }; }
    }}}

    keyword CATCH (List $param = '($'.('_'x50).'v)', Block $block) {{{
        BEGIN { eval'$CATCH=$CATCH;1' // die q{Can't specify CATCH block outside a try};              }
        BEGIN { die q{Can't specify two CATCH blocks inside a single try} if defined $CATCH;          }
        BEGIN { $CATCH = sub { use experimentals; my <{$param}> = @_; given (<{$param}>) <{$block->reline}> } }
    }}}
}

1; # Magic true value required at end of module