B-Tools

 view release on metacpan or  search on metacpan

lib/B/Tools.pm  view on Meta::CPAN

use 5.008005;
use strict;
use warnings;

our $VERSION = "0.01";

use parent qw(Exporter);

our @EXPORT = qw(op_grep op_walk op_descendants);

sub op_walk(&$) {
    my ($code, $op) = @_;
    local *B::OP::walkoptree_simple = sub {
        local $_ = $_[0];
        $code->();
    };
    B::walkoptree($op, 'walkoptree_simple');
}

sub op_grep(&$) {
    my ($code, $op) = @_;

    my @ret;
    op_walk {
        if ($code->()) {
            push @ret, $_;
        }
    } $op;
    return @ret;
}

sub op_descendants($) {
    my $op = shift;
    my @result;
    op_walk {
        push @result, $_;
    } $op;
    return @result;
}

1;
__END__



( run in 0.423 second using v1.01-cache-2.11-cpan-65fba6d93b7 )