Try-Tiny-Warnings

 view release on metacpan or  search on metacpan

lib/Try/Tiny/Warnings.pm  view on Meta::CPAN

our @EXPORT = qw/ 
    try_warnings 
    try_fatal_warnings 
    catch_warnings 
/;

our %EXPORT_TAGS = (
    'all' => [ @EXPORT, @EXPORT_OK ],
);

sub try_fatal_warnings(&;@) { 
    my $sub = shift;

    local $SIG{__WARN__} = sub { die @_ };

    try { $sub->() } @_;
};

sub try_warnings(&;@) {  
    my $sub = shift;

    my @warnings;
    local $SIG{__WARN__} = sub { push @warnings, @_ };

    try { $sub->() } map {
        my $x = $_;
        ref $_ eq 'Try::Tiny::Warnings::Catch' 
            ? finally { $x->(@warnings) }
            : $_
    } @_;

};

sub catch_warnings(&;@) {  
    my $sub = shift;
    return bless( $sub, 'Try::Tiny::Warnings::Catch' ), @_
};

1;

__END__

=pod



( run in 0.732 second using v1.01-cache-2.11-cpan-49f99fa48dc )