Расширяя метод Алекса, вместо того, чтобы указывать каждое начало и конец, используйте список длин, который вы дали.
#!/usr/bin/env perl
use strict;
use warnings;
my $string = "abcdefghijklmnopqrstuvw";
my $pos = 0;
my @split = map {
my $start = $pos;
my $end = $_;
$pos += $end;
substr( $string, $start, $end);
} (2,3,4,4,3,7);
print "$_\n" for @split;
Это говорит о том, что вы, вероятно, должны смотреть на unpack
, который используется для полей фиксированной ширины.У меня нет опыта с этим, хотя.