sub send_packet { my ($socket, $packet) = @_; my $length = length($packet); my $lengthbuf = pack("N", $length); my $rc = syswrite($socket, $lengthbuf, 4); die "syswrite (length): $!\n" if $rc != 4; my $byteswritten = 0; while ($byteswritten < $length) { my $rc = syswrite($socket, $packet, length($packet)); die "SEND_PACKET: sysread (data): $!\n" if $rc < 0; $packet = substr($packet, $rc, -1); $byteswritten += $rc; } }