The quantifier actually makes it match every group; however, it only stores the last match in $1, and thus that's what you see in your return. See
Extracting matches in
perlretut.
If you want to extract an arbitrary number of digits sandwiched between decimal points, you can grab them all, and then split the result.
/((?:\d+\.)+)/g;
split /(?<=\.)/, $1;
Alternatively,
[i]n list context, //g returns a list of matched groupings, or if there are no groupings, a list of matches to the whole regexp
(see
Global matching in
perlretut) so you could try
my @res = /(?<=\.)\d+\./g;
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.