App-Greple

 view release on metacpan or  search on metacpan

lib/App/Greple/Filter.pm  view on Meta::CPAN

sub push_output_filter {
    my %arg = ref $_[0] eq 'HASH' ? %{+shift} : ();
    my $fh = shift;
    my $pkg = caller;
    for my $filter (reverse @_) {
	$debug{F} and warn "Push output Filter: \"$filter\"\n";
	my $pid = open($fh, '|-') // die "$filter: $!\n";
	if ($pid == 0) {
	    if ($filter =~ /^&/ and
		my $f = parse_func({ PACKAGE => $pkg }, $filter)) {
		local @ARGV;
		open STDIN, '<&', 0 if eof STDIN;
		$f->call;
	    } else {
		do { exec $filter } ;
		warn $@ if $@;
	    }
	    exit;
	}
    }
}



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