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関数
