Because the form ${^X} must have an uppercase charater there. This comes from toke.c:
/* In variables name $^X, these are the legal values for X.
* 1999-02-27 mjd-perl-patch@plover.com */
#define isCONTROLVAR(x) (isUPPER(x) || strchr("[\\]^_?",(x)))
And the ${^Xyzpdq} variables are an extension of those, so claims perlvar:
It understands `^X' (caret `X') to mean the control-`X'
character. For example, the notation `$^W' (dollar-sign
caret `W') is the scalar variable whose name is the single
character control-`W'. This is better than typing a
literal control-`W' into your program.
Finally, new in Perl 5.6, Perl variable names may be
alphanumeric strings that begin with control characters
(or better yet, a caret). These variables must be written
in the form `${^Foo}'; the braces are not optional.
`${^Foo}' denotes the scalar variable whose name is a
control-`F' followed by two `o''s. ...
|