=over

=item recv SOCKET,SCALAR,LENGTH,FLAGS
X<recv>

Receives a message on a socket.  Attempts to receive LENGTH characters
of data into variable SCALAR from the specified SOCKET filehandle.
SCALAR will be grown or shrunk to the length actually read.  Takes the
same flags as the system call of the same name.  Returns the address
of the sender if SOCKET's protocol supports this; returns an empty
string otherwise.  If there's an error, returns the undefined value.
This call is actually implemented in terms of the L<recvfrom(2)> system call.
See L<perlipc/"UDP: Message Passing"> for examples.

Note that if the socket has been marked as C<:utf8>, C<recv> will
throw an exception.  The C<:encoding(...)> layer implicitly introduces
the C<:utf8> layer.  See L<C<binmode>|/binmode FILEHANDLE, LAYER>.

=back