in reply to a way to handle the multiple processes output

I am not sure about your question.
If the problem is buffering be sure you have set them to flush:
use IO::Handle; $F = new IO::Handle; $F->autoflush(1);
If what you want is to filter the output then create a filter by forking again like in this example
$ cat -n openself 1 #!/usr/local/bin/perl -w 2 use strict; 3 use utf8; 4 binmode(STDOUT, ':utf8'); 5 binmode(STDIN, ':utf8'); 6 7 print "Father: $$\n"; 8 9 my $pid = open(STDOUT, "|-"); 10 die "cannot fork: $!" unless defined $pid; 11 12 # Child filters father's output 13 filterstdout() unless $pid; 14 15 # Father 16 print " <- This is the PID of the child\n"; 17 while (<>) { 18 print 19 } 20 21 sub filterstdout { 22 while (<STDIN>) { 23 tr/áéíóúñ€/aeioun$/; 24 print "$$: $_"; 25 } 26 exit; 27 }

Hope it helps

Casiano