#!/usr/bin/env perl -T
use 5.010;
use strict;
use warnings;
use re qw{taint eval};
my $x = "3aaaa\nbbbb\nccccc\nddddd";
my @captures;
$x =~ /\A (\d+) ( (??{ '(.+?(?:\n|$))(?{ push @captures, $^N })' x $1 }) )/mx;
say '[1]', $1, '[1]';
say '[2]', $2, '[2]';
say '[', $_ + 3, ']', $captures[$_], '[', $_ + 3, ']' for 0 .. $#captures;
####
$ pm_1047667_regex.pl
[1]3[1]
[2]aaaa
bbbb
ccccc
[2]
[3]aaaa
[3]
[4]bbbb
[4]
[5]ccccc
[5]
##
##
$ pm_1047667_regex.pl
[1]2[1]
[2]aaaa
bbbb
[2]
[3]aaaa
[3]
[4]bbbb
[4]
##
##
$ pm_1047667_regex.pl
[1]4[1]
[2]aaaa
bbbb
ccccc
ddddd[2]
[3]aaaa
[3]
[4]bbbb
[4]
[5]ccccc
[5]
[6]ddddd[6]