perlの正規表現(??{ ... })内で$^Nがうまく動かないのは仕様?

コード。

use strict;
use warnings;
use re 'eval';
use re 'debug';

my $digit = qr{(\d)(?{print "\$^N: '$^N'\n"})};
my $_digit = qr{(??{$digit})};

# print "\$digit : ", '1' =~ /$digit/,  "\n";
print "\$_digit: ", '1' =~ /$_digit/, "\n";

結果。

Compiling REx "(\d)(?{print %"\$^N: '$^N'\n%"})"
Final program:
   1: OPEN1 (3)
   3:   DIGIT (4)
   4: CLOSE1 (6)
   6: EVAL (8)
   8: END (0)
stclass DIGIT minlen 1 with eval 
Compiling REx "(??{$digit})"
Final program:
   1: LOGICAL[2] (2)
   2: EVAL (4)
   4: END (0)
minlen 0 with eval 
Matching REx "(??{$digit})" against "1"
   0 <> <1>                  |  1:LOGICAL[2](2)
   0 <> <1>                  |  2:EVAL(4)
Matching embedded REx "(\d)(?{print %"\$^N: '$^N'\n%"})" against "1"
   0 <> <1>                  |  1:  OPEN1(3)
   0 <> <1>                  |  3:  DIGIT(4)
   1 <1> <>                  |  4:  CLOSE1(6)
   1 <1> <>                  |  6:  EVAL(8)
Use of uninitialized value $^N in concatenation (.) or string at (re_eval 1) line 1.
   1 <1> <>                  |  8:  END(0)
                                    EVAL trying tail ... 0
   1 <1> <>                  |  4:    END(0)
Match successful!
$^N: ''
$_digit: 1
Freeing REx: "(??{$digit})"
Freeing REx: "(\d)(?{print %"\$^N: '$^N'\n%"})"

正規表現は正しくマッチしているのにかかわらず、$^Nには何も入らず、Use of uninitialized value $^Nが出てます。元々、実験的な機能なので仕方ないといえば仕方ないのですが……。