use strict;
use warnings;
my $re;
$re = qr/
(\d)
(?{ print("[$1]\n") })
/x;
'thr33' =~ $re;
__END__
output
======
[3]
####
use strict;
use warnings;
my $re0;
my $re1;
$re1 = qr/
(\d)
(?{ print("[$1]\n") })
/x;
$re0 = qr/
(??{ $re1 })
/x;
'thr33' =~ $re0;
__END__
output
======
Use of uninitialized value in concatenation (.) or string at (re_eval 1) line 1.
[]
####
use strict;
use warnings;
my $re0;
my $re1;
$re1 = qr/
(\d)
(?{ print("[$-[0]]\n") })
/x;
$re0 = qr/
(??{ $re1 })
(??{ $re1 })
/x;
'thr33' =~ $re0;
__END__
output
======
[3]
[3]
expected
========
[3]
[4]