If I write a regex which includes multiple capturing groups (qr/(\D+)(\d+)/ and (?{ }) eval blocks is there a way to find out which numbered variable was just assigned to? So if I wrote qr/(\D+)(\d+)(\D+)(?{ foo( ?? ) })/ is there a way to find out that I should be reading from $3 and not a different variable?
I tried writing some diagnostic code to compare the addresses of $+ and the numbered variables but that didn't do anything useful. It indicated that each of $+, $1, $2 and $3 are all separate variables and $+ isn't temporarily aliased to $3 which would at least let me compare references like \ $+ == \ $1. So what works?
$text = "abc123def";
$text_match = qr/(\D+)(\d+)(?{ dumpr() })(\D+)/;
$text =~ $text_match;
use Devel::Peek;
sub dumpr {
Dump($+), Dump($1), Dump($2), Dump($3);
local $\ = "\n";
print $+;
print $1;
print $2;
print $3;
}