Как я могу получить доступ к определенному диапазону байтов в файле, используя Perl? - PullRequest
4 голосов
/ 16 апреля 2010

Какой самый удобный способ извлечь указанный диапазон байтов файла на диске в переменную?

Ответы [ 2 ]

5 голосов
/ 16 апреля 2010

seek до начала диапазона, read желаемое количество байтов (или sysseek / sysread - см. Комментарий nohat).

open $fh, '<', $filename;
seek $fh, $startByte, 0;
$numRead = read $fh, $buffer, $endByte - $startByte; # + 1
&do_something_with($buffer);
3 голосов
/ 17 апреля 2010

Иногда мне нравится использовать File :: Map , который лениво загружает файл в скаляр. Это превращает его в строковые операции вместо операций с дескрипторами файлов:

    use File::Map 'map_file';

    map_file my $map, $filename;

    my $range = substr( $map, $start, $length );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...