Acme-Capture

 view release on metacpan or  search on metacpan

lib/Acme/Capture.pm  view on Meta::CPAN

    my $args = join q{, }, @{$api{$sub}};
    eval "sub $sub(&;@) { unshift \@_, $args; goto \\&Capture::Tiny::_capture_tee; }"; ## no critic
}

{
    no warnings 'redefine';
    eval <<'EOT' or die "Can't redefine _relayer() ==> $@";
    sub Capture::Tiny::_relayer {
        my ($fh, $layers) = @_;

        my $unix_utf8_crlf = @$layers > 4
          && $layers->[0] eq 'unix'
          && $layers->[1] eq 'crlf'
          && $layers->[2] eq 'utf8'
          && $layers->[3] eq 'unix'
          && $layers->[4] eq 'encoding(utf8)' ? 1 : 0;

        if ($unix_utf8_crlf and $^O eq 'MSWin32') {
            binmode($fh, ':unix:encoding(utf8):crlf');
        }
        else {
            # _debug("# requested layers (@{$layers}) for @{[fileno $fh]}\n");
            my %seen = ( unix => 1, perlio => 1 ); # filter these out
            my @unique = grep { !$seen{$_}++ } @$layers;
            # _debug("# applying unique layers (@unique) to @{[fileno $fh]}\n");
            binmode($fh, join(":", ":raw", @unique));
        }
    };



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