#!/usr/bin/perl # qnumcat - demo additive output filters number(); # push number filter on STDOUT quote(); # push quote filter on STDOUT while (<>) { # act like /bin/cat print; } close STDOUT; # tell kids we're done--politely exit; sub number { my $pid; return if $pid = open(STDOUT, "|-"); die "cannot fork: $!" unless defined $pid; while () { printf "%d: %s", $., $_ } exit; } sub quote { my $pid; return if $pid = open(STDOUT, "|-"); die "cannot fork: $!" unless defined $pid; while () { print "> $_" } exit; }