in reply to Re: How can one bypass use strict?
in thread How can one bypass use strict?

But why complains ${CMDLINE} = 'foo'; then??

And why does ${^cmdline} = 'foo'; give a syntax error?? There must be some kind of special rules for variables starting with /^\^[A-Z]/,

-- Hofmator

Replies are listed 'Best First'.
Re: Re: Re: How can one bypass use strict?
by clintp (Curate) on Aug 13, 2001 at 23:57 UTC
    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. ...