use warnings;
use strict;
$\ = $/;
my $A = 2;
my $_0to2 = join '', 0 .. 2;
$_ = join '=', ( $_0to2 ) x 2;
print "\$_:[$_]";
print /^
\d*(\d)\d* = \d*(\d)\d*
(?(?{ my %h; map $h{ $_ } ++, $1, $2; 2 == keys %h }) | (*FAIL) )
(?(?{ $1 < $2 }) | (*FAIL) )
(?(?{ my $sum = $1 + $2; $sum == $A }) | (*FAIL) )
$/x ?
"MATCHED: \$1:[$1], \$2:[$2]"
:
"NOT_MATCHED"
;
####
$_:[012=012]
NOT_MATCHED
####
$_:[012=012]
MATCHED: $1:[0], $2:[2]
####
(?(?{ my %h; map $h{ $_ } ++, $1, $2; print 0 + keys %h; 2 == keys %h }) | (*FAIL) )