When using capturing parentheses in regualar expressins in Perl, the captures strings are available in the variables $1, $2, etc. counting the opening parenthese from left to right.
In the first example you can see two distinct pairs of parentheses.
In the second example there is a third pair of parentheses around the whole regex which becomes $1
because it has the left-most opening parens.
use strict;
use warnings;
use 5.010;
my $text = 'Some text with a number: 23 and an answer: 42 and more';
if ($text =~ /(\w+):\s+(\d+)/) {
say $1; # number
say $2; # 23
}
if ($text =~ /((\w+):\s+(\d+))/) {
say $1; # number: 23
say $2; # number
say $3; # 23
}
Substitution
Capturing can also be used in the replacement part of a substitution:
use strict;
use warnings;
use 5.010;
my $text = '1234567890';
$text =~ s/(\d)(\d)/$2$1/g;
say $text; # 2143658709