#foo() is the sub that outputs a lot of data my $pid = open(SUBOUT, '-|'); defined($pid) or die "Fork failed: $!"; if ($pid == 0) { $|=1; foo(); exit(0); } while () ... #### #!/usr/bin/perl -l defined($tmp = open(FOO, '-|')) or die "Can't fork: $!"; if ($tmp==0) { print "Roses are red\nViolets are blue\nI think Perl rules\nAnd you should too\n"; exit(1); } print for map {chomp; "[$tmp] {$_}"} ; #### $"=$,,$_=q>|\p4<6 8p .q>.<4-KI;$, .=pack'N*',"@{[unpack'C*',$_] }"for split/