sub get { my($self) = shift; my($len) = @_; my($x, $n, $o) = ("", 0, 0); my($sock) = $$self; do { $n = $sock->sysread($x, $len - $o, $o); croak $! unless defined $n; $o += $n; } until $o == $len or $n == 0; return $x; }