while (my @ready = $s->can_read()) { my $buff; foreach my $fh ( @ready ) { my $res = sysread($fh, $buff, 1024); if ($res > 0) { $results{$host} .= $buff; } elsif (defined $res) { delete $results{$fh} if ( $res == 0); } else { # $res is undef, so tell our user about the error print "Something broke! : $!\n"; } } }