$w1 = open(fw1,"pgm1|");
...
$read_set->add($w1);
####
my $pid1 = open my $fh1, "pgm1|";
my $pid2 = open my $fh2, "pgm2|";
my $read_set = new IO::Select();
$read_set->add($fh1);
$read_set->add($fh2);
...
####
close $fh1 or warn "subprocess failed: status=$?\n";