sub SOCKETread{ my $s = $_[0]; my $buffer = ""; my ($ready, $fdmask, $nfound); $buffer = read_line($s); # do stuff with buffer return $buffer; } sub read_line { my $s = shift; my $maxline = 50; my $buffer = ''; my ($buf, $bytesread); do { $bytesread = sysread($s, $buf, $maxline); $buffer .= $buf; } while($bytesread == $maxline and $buffer !~ /\n$/); return $buffer; }