in reply to Code in regexp

This is not a Perl bug, simply change your regexp to this, and the warning will go away: (As you said the length is between 2 and 9 inclusively)
print "$_ okay\n" if /^(\d)((??{$+ + 1})){1,8}$/;