将磁盘上文件的指定字节范围提取到变量中最方便的方法是什么?
答案 0 :(得分:5)
seek
到范围的开头,read
所需的字节数(或sysseek
/ sysread
- 请参阅nohat的评论)。
open $fh, '<', $filename;
seek $fh, $startByte, 0;
$numRead = read $fh, $buffer, $endByte - $startByte; # + 1
&do_something_with($buffer);
答案 1 :(得分:3)
有时我喜欢使用File::Map,它会懒惰地将文件加载到标量中。这将它变成字符串操作而不是文件句柄操作:
use File::Map 'map_file';
map_file my $map, $filename;
my $range = substr( $map, $start, $length );