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 recvfrom(2) system call. See "UDP: Message Passing" in perlipc for examples.

ソケット上のメッセージを受信します。 指定されたファイルハンドル SOCKET から、変数 SCALAR に LENGTH 文字のデータを読み込もうとします。 SCALAR は、実際に読まれた長さによって、大きくなったり、小さくなったりします。 同名のシステムコールと同じフラグが指定できます。 SOCKET のプロトコルが対応していれば、送信側のアドレスを返します。 エラー発生時には、未定義値を返します。 実際には、C のrecvfrom(2) を呼びます。 例については "UDP: Message Passing" in perlipc を参照してください。

Note the characters: depending on the status of the socket, either (8-bit) bytes or characters are received. By default all sockets operate on bytes, but for example if the socket has been changed using binmode() to operate with the :encoding(utf8) I/O layer (see the open pragma, open), the I/O will operate on UTF8-encoded Unicode characters, not bytes. Similarly for the :encoding pragma: in that case pretty much any characters can be read.

文字 に関する注意: ソケットの状態によって、(8 ビットの) バイトか 文字を受信します。 デフォルトでは全てのソケットはバイトを処理しますが、 例えばソケットが binmode() で :encoding(utf8) I/O 層(open プラグマ、 open を参照してください) を使うように指定された場合、I/O はバイトではなく、 UTF8 エンコードされた Unicode 文字を操作します。 :encoding プラグマも同様です: この場合、ほとんど大体全ての文字が読み込めます。