構文 |
|
sysread ファイル・ハンドル, SCALAR, LENGTH, データ格納位置 sysread ファイル・ハンドル, SCALAR, LENGTH |
引数 | SCALAR | 読み込みデータ格納場所 |
LENGTH | 読み込みデータ数 |
返り値 |
|
実際に読み込んだデータ数 |
説明
- ファイル・ハンドルからLENGTHバイトのデータを読み込んでSCALARに格納します。
- 実際に読み込んだバイト数を返します。ファイルの最後で関数を呼び出した場合は0を返します。読み取りエラーが発生した場合は未定義値を返します。
- データ格納位置を指定するとSCALARにデータを格納する際に指定した分だけ後ろにズラして格納します。省略した場合はSCALARの先頭からデータを格納します。
使用例
#!/usr/bin/perl
use strict;
use warnings;
my $filename = 'data.txt';
my $data;
open my $fh, '<', $filename or die "$!:$filename";
while (1) {
my $len = sysread $fh, my($buf), 1024;
unless (defined $len) {
# 読み取り失敗
die "read error: $!";
} elsif ($len == 0) {
# 読み取り終了
last;
}
$data .= $buf;
}
close $fh;
syswrite STDOUT, $data;
#!/usr/bin/perl
use strict;
use warnings;
my $filename = 'data.txt';
my $size = 10;
open my $fh, '<:utf8', $filename or die "$!:$filename";
my $len = sysread $fh, my($buf), $size;
unless (defined $len) {
# 読み取り失敗
die "read error: $!";
}
my $data = $buf;
close $fh;
binmode STDOUT, ':utf8';
syswrite STDOUT, $data, $size;