Captures with quantifiers match the last captured substring

A student in my Learning Perl class asked about what shows up in a capture when you apply a quantifier to that group. The great thing about computer programming is that you can just try it to find out:


my $_ = 'abc def ghi jkl';

if( /(\S+) \s+ (\S+\s+)+ (\S+)/x ) {
	print "
1: $1
2: $2
3: $3
";
	}
else {
	print "No match!\n";
	}

In that code, $2 comes from that capture sub pattern (\S+\s+), which can match one or more times. Does it get all the things it matched or just the last one? The output shows that it’s the last one:

1: abc
2: ghi 
3: jkl

The same thing happens for named captures, even those though are already designed to potentially remember many captures:

use Data::Dumper;
$_ = 'abc def ghi jkl';

if( /(\S+) \s+ (?\S+\s+)+ (\S+)/x ) {
	print Dumper( \%-, \%+ );
	}
else {
	print "No match!\n";
	}

It only gets the last one too:

$VAR1 = {
          'two' => [
                     'ghi '
                   ]
        };
$VAR2 = {
          'two' => 'ghi '
        };

This isn’t documented in perlre or anywhere else that I could find.