sysread
sysread FILEHANDLE, SCALAR, LENGTH, OFFSET
sysread FILEHANDLE, SCALAR, LENGTH
FILEHANDLEからLENGTHバイト読み込みSCALARに格納します。読み込みにはシステムコールのread(2)を利用します。
実際に読み込んだバイト数を返します。EOFの場合は0を、読み込みに失敗した場合は未定義値を返します。
SCALARの先頭以外に書き込む場合はOFFSETを指定します。指定した位置から書き込みを行います。
バッファリングを行いません。
ソケットから読み込む場合、到達しているデータがLENGTHバイト未満の場合でも到達している分のデータを読み込みます。readを使うとLENGTHバイト到達するかデータが終了するまで待ちます。
サンプルプログラム
use strict; use warnings; my $filename = 'data.txt'; my $doc = ''; open my $fh, '<', $filename or die "$!:$filename"; while (1) { my $len = sysread $fh, my($buf), 1024; die "read error: $!" unless defined $len; last if $len == 0; $doc .= $buf; } close $fh; binmode STDOUT; print $doc;
関連項目
・read関数・syswrite関数