7.23 ブロックせずに行全体を読み取る

読み取りの準備ができたファイルハンドル(selectで検出)から、データ行を読み取りたい。しかし、Perlの通常の操作(readline関数)とselectを一緒に使用することはできない。なぜなら、が余分なデータをバッファリングするのに対して、selectはそのバッファの存在を知らないから。

  • sysreadline関数を使用する。
$line = sysreadline(SOME_HANDLE);
  • 行の一部が送られてくる場合に限り、待ち時間(秒数)も指定する。
$line = sysreadline(SOME_HANDLE, TIMEOUT);