Да, есть. Функция unpack
хорошо подходит для работы с записями фиксированной ширины.
Пример
my $record = "1234ABCDEFGHIJK";
my @fields = unpack 'A4A11', $record; # 1st field is 4 chars long, 2nd is 11
print "@fields"; # Prints '1234 ABCDEFGHIJK'
Первый аргумент - это шаблон, который сообщает unpack
, где поля начинаются и заканчиваются. Второй аргумент сообщает, какую строку распаковать.
unpack
также можно сказать игнорировать позиции символов в строке, указав нулевые байты, x
. Шаблон 'A4x2A9'
можно использовать для игнорирования "AB"
в примере выше.
См. perldoc -f pack
и perldoc perlpacktut
для более подробной информации и примеров.