Currently, each punctuation variable has an $ENGLISH_NAME alias available
for readability. But this has a couple problems: it's only available if you
"use English;" which does not provide a direct indication of the variables
it's related to in the code, and was a significant performance penalty in
older versions of Perl; these issues leading to not much use of the module
and thus the knowledge of their existence has not become widespread; so
average Perl programmers finding $CHILD_ERROR in Perl code are likely not
to know it's an alias for $? or that it's a built-in variable at all, thus
reducing its effective readability instead of increasing it.
Proposed by haarg in https://github.com/Perl/perl5/issues/18699 is to add
aliases like ${^CHILD_ERROR}, using the built-in variable form used for
other more recently added built-in variables.
This has a few advantages: it provides a readable indication of its purpose
like those provided by "use English"; it is clearly a built-in variable to
those who have come across that syntax, and clearly not a regular variable
to those who don't; and it doesn't require an opt-in such as "use English"
as this syntax is already available for Perl to add any new variable names.
The risks are primarily that it doesn't end up being useful and in the
process uses up a bunch of built-in variable names - but reusing the
existing English names for any other purpose strikes me as a poor idea
regardless. It also is likely to be considered uglier than English
variables, due to the extra punctuation required.
This may also be a tangential way to work toward addressing the problem of
rarely-used punctuation variables preventing the use of syntax for other
purposes, such as discussed in https://github.com/Perl/perl5/issues/18393.
-Dan
for readability. But this has a couple problems: it's only available if you
"use English;" which does not provide a direct indication of the variables
it's related to in the code, and was a significant performance penalty in
older versions of Perl; these issues leading to not much use of the module
and thus the knowledge of their existence has not become widespread; so
average Perl programmers finding $CHILD_ERROR in Perl code are likely not
to know it's an alias for $? or that it's a built-in variable at all, thus
reducing its effective readability instead of increasing it.
Proposed by haarg in https://github.com/Perl/perl5/issues/18699 is to add
aliases like ${^CHILD_ERROR}, using the built-in variable form used for
other more recently added built-in variables.
This has a few advantages: it provides a readable indication of its purpose
like those provided by "use English"; it is clearly a built-in variable to
those who have come across that syntax, and clearly not a regular variable
to those who don't; and it doesn't require an opt-in such as "use English"
as this syntax is already available for Perl to add any new variable names.
The risks are primarily that it doesn't end up being useful and in the
process uses up a bunch of built-in variable names - but reusing the
existing English names for any other purpose strikes me as a poor idea
regardless. It also is likely to be considered uglier than English
variables, due to the extra punctuation required.
This may also be a tangential way to work toward addressing the problem of
rarely-used punctuation variables preventing the use of syntax for other
purposes, such as discussed in https://github.com/Perl/perl5/issues/18393.
-Dan