use IO::Select; open FHANDA,"processA|" || die(".."); open FHANDB,"processA|" || die(".."); open FHANDC,"processA|" || die(".."); $Select = IO::Select->new(); $Select->add(*FHANDA); $Select->add(*FHANDB); $Select->add(*FHANDC); if (@ready = $slect->can_read(0)) { for (@ready) { #Process the file handle (do the read and write) } }