in reply to Matching n characters with m//g

Here's something to illustrate perhaps a little better what I had in mind:

c:\@Work\Perl\monks>perl -wMstrict -le "use constant MAX => 32_760; ;; my $s = 'FLAGS xyzzy UID 42 RFC {234565} ' . 'a' x 234565 . 'Y yyyy'; print substr $s, 0, 50; print substr $s, -50; print length $s; ;; my %piece; ;; PARSE: { if ($s =~ m{ \G RFC \s* \{ (\d+) \} \s* }xmsgc) { my $total = $1; use integer; my $n = $total / MAX; my $m = $total % MAX; $s =~ m{ \G ((?: .{${ \MAX }}){$n} .{$m}) \s* }xmsg or die 'no co +unt'; $piece{rfc} = $1; redo PARSE; } elsif ($s =~ m{ \G \s* Y \s* (\w+) \s* }xmsgc) { $piece{y} = $1; redo PARSE; } elsif ($s =~ m{ \G UID \s* (\d+) \s* }xmsgc) { $piece{uid} = $1; redo PARSE; } elsif ($s =~ m{ \G \s* FLAGS \s* (\w+) \s* }xmsgc) { $piece{flags} = $1; redo PARSE; } else { last PARSE; } } ;; print qq{flags '$piece{flags}' uid '$piece{uid}' y '$piece{y}'}; printf qq{start rfc: '%s' \n}, substr $piece{rfc}, 0, 30; printf qq{ end rfc: '%s' \n}, substr $piece{rfc}, -30; print 'length rfc: ', length $piece{rfc}; " FLAGS xyzzy UID 42 RFC {234565} aaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaY yyyy 234603 flags 'xyzzy' uid '42' y 'yyyy' start rfc: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' end rfc: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' length rfc: 234565


Give a man a fish:  <%-{-{-{-<