sub receive { my($message, $j, $i, $length, %result, $help, $result); my $self=$_[0]; my $remote=$self->{remote}; if (defined($self->{buffer})) { debug("read from buffer", "info"); $message=$self->{buffer}; } else { debug("read from socket", "info"); $i =$remote->recv($help, 4096); $message=$help; while (substr($help, length($help)-1) ne "\n") { $remote->recv($help, 4096); $message=$message.$help; debug("Read again from socket");#comment out } } debug("Processing: $message");#comment out if (length($message)==index($message,"\n")+1) { debug("one message"); $result=$message; $self->{buffer}=undef; } else { debug("multiple messages"); $result=substr($message, 0, index($message, "\n")); $self->{buffer}=substr($message, index($message, "\n")+1); } return $result; }