Data-Munge

 view release on metacpan or  search on metacpan

lib/Data/Munge.pm  view on Meta::CPAN

    map { $f->($_); $_ } @xs
}

if ($^V ge v5.16.0) {
    eval_string <<'EOT';
sub rec (&) {
    my ($f) = @_;
    sub { $f->(CORE::__SUB__, @_) }
}
EOT
} elsif (eval { require Scalar::Util } && defined &Scalar::Util::weaken) {
    *rec = sub (&) {
        my ($f) = @_;
        my $w;
        my $r = $w = sub { $f->($w, @_) };
        Scalar::Util::weaken($w);
        $r
    };
} else {
    # slow but always works
    *rec = sub (&) {
        my ($f) = @_;
        sub { $f->(&rec($f), @_) }
    };
}



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