while (@handles) { @handles = grep { if (defined(my $line = readline($_))) { print $line; 1; } else { 0 } } @handles; }