Ilya Zakharevich wrote:
> 
> On the other hand, there are only 5 names, not hundreds of them, and
> they do not "get in the way", as ADD would do (prohibiting a method
> named ADD).  So letting them be may be also a solution...

Uhhh, I think you should check the Camel. These variables certainly do
get in the way, you can't create your own %ENV any more than you can
create your own STORE without it drastically affecting your program.

And as for "5 names", there are a few more than that:

   $a, $ACCUMULATOR, $^A, $ARG, $_, @ARG, @_, $ARGV,
   @ARGV, $b, $BASETIME, $^T, $CHILD_ERROR, $?, 
   $COMPILING, $^C, $DEBUGGING, $^D, $EFFECTIVE_GROUP_ID,
   $EGID, $), $EFFECTIVE_USER_ID, $EUID, $>, %ENV, 
   $EVAL_ERROR, $@, $EXCEPTIONS_BEING_CAUGHT, $^S,
   $EXECUTABLE_NAME, $^X, @EXPORT_OK, %EXPORT_TAGS,
   $EXTENDED_OS_ERROR, $^E, @F, %FIELDS, $FORMAT_FORMFEED
   $^L, $FORMAT_LINES_LEFT, $-, $FORMAT_LINES_PER_PAGE,
   $=, $FORMAT_LINE_BREAK_CHARACTERS, $:, $FORMAT_NAME,
   $~, $FORMAT_PAGE_NUMBER, $%, $FORMAT_TOP_NAME, $^,
   $^H, %^H, %INC, @INC, $INPLACE_EDIT, $^I, $NR, $.,
   $INPUT_LINE_NUMBER, $INPUT_RECORD_SEPARATOR, $RS, $/,
   @ISA, @LAST_MATCH_END, @+, @LAST_MATCH_START, @-,
   $LAST_PAREN_MATCH, $+, $LAST_REGEXP_CODE_RESULT, $^R,
   $LIST_SEPARATOR, $", $^M, $MATCH, $&, $OLD_PERL_VERSION,
   $], $OSNAME, $^O, $OS_ERROR, $ERRNO, $!, %OS_ERROR,
   %ERRNO, %!, $OUTPUT_AUTOFLUSH, $AUTOFLUSH, $|, $OFS,
   $OUTPUT_FIELD_SEPARATOR, $, $OUTPUT_RECORD_SEPARATOR,
   $ORS, $\, %OVERLOAD, $PERLDB, $^P, $PERL_VERSION, $^V,
   $POSTMATCH, $', $PREMATCH, $`, $PROCESS_ID, $PID, $$,
   $PROGRAM_NAME, $0, $REAL_GROUP_ID, $GID, $(, $UID,
   $REAL_USER_ID, $<, %SIG, $STDIN, $STDERR, $STDOUT,
   $SUBSCRIPT_SEPARATOR, $SUBSEP, $;, $SYSTEM_FD_MAX, $^F,
   $VERSION, $WARNING, $^W, ${^WARNING_BITS}, $AUTOLOAD
   ${^WIDE_SYSTEM_CALLS}, $1.., $[, $#, $*

These are all special Perl variables. While you have to 'use English' to
get to some of them, you can't safely use any of them in your program.
And their scope varies from always being in main:: to being in the local
package.

As I said earlier on a different proposal, these are not simple things.
Any proposal that wants to redo this all better provide an extensive
analysis and clear migration path.

-Nate

Reply via email to