# Receiver: my $data = do { my $length = do { my $buf; sysread( $sock, $buf, 4-length($buf), length($buf) ) while length($buf) < 4; unpack( 'N', $buf ) }; my $buf; sysread( $sock, $buf, $length-length($buf), length($buf) ) while length($buf) < $length; deserialize($buf) };