2014-05-11 3 views
0

Есть ли способ получить байты из файла и сохранить его в массиве Perl?Использование Perl для чтения записей фиксированной длины из файла

Например, если у моего файла есть 100 байт, я хочу иметь возможность создать массив, в котором каждый элемент хранит 10 байтов.

Я знаю, как создавать массивы и хранить строки, но я не уверен, как получить только байты.

ответ

7

разделитель входных записей$/ обычно устанавливается в строку (обычно перевод строки "\n"), который указывает конец каждой записи в файле.

Однако его можно также установить (временно) на ссылку на целое число, определяющее размер записей фиксированной длины.

Вы также, вероятно, хотите, чтобы прочитать файл в режиме RAW (двоичный), так что ваш код будет выглядеть примерно как этот

use strict; 
use warnings; 
use autodie; 

my @data = do { 
    open my $fh, '<:raw', 'myfile'; 
    local $/ = \10; 
    <$fh>; 
}; 

Обратите внимание, что, если это более удобно, длина может быть строка

local $/ = \'10'; 

или переменной, которая содержит целое число или строку

my $record_size = 10; 
local $/ = \$record_size; 
Смежные вопросы