use IO::Select; my $read_set = new IO::Select(); #create handle set for reading open JOB1, 'perl test1.pl|' or die "cannot pipe to perl: $!"; open JOB2, 'perl test3.pl|' or die "cannot pipe to perl: $!"; my $read_set->add(JOB1); my $read_set->add(JOB2); while (1) { my $rh_set = IO::Select->select($read_set, undef, undef, 0); foreach my $rh (@$rh_set) { my $output = <$rh>; print $output2; print "in foreach $rh\n"; } } close JOB1; close JOB2;