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;
}



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