note
turnstep
<P>"%_<filename" has a purpose in the debugger (see
%DB::dbline), and that may be what the author of the
patch meant by "the %_ hack".</P>
<P>I also noticed that the module "English" assigns
the whole typeglob (*_) to the name "ARG", i.e.
@ARG becomes equivalent to @_, $ARG equivalent to
$_, and therefore %ARG becomes equivalent to our
mysterious %_. This further bolsters the theory that
it's just a leftover from the others in the same typeglob.</P>
<P>
> Since _ variables ($_, @_) hold arguments, would %_ make
<BR>> intuitive sense to you as "the variable holding
<BR>> named arguments"? It really was a random thought, but
<BR>> since I thoroughly enjoy learning idiomatic Perl, this
<BR>> idea struck me with some force.</P>
<P>Doesn't seem intuitive to me, sorry. I prefer named
variables.</P>
<P>
> Other than declaring it local (which suggests some deeper
<BR>> meaning in and of itself), how would you feel about
<BR>> code (a subroutine) which stores its named arguments
<BR>> in %_? Does this help or hinder self-documentation? </P>
<P>Definitely hinders. In general, you want to stay away from using
global special variables in the way that they were not intended,
even if they appear as if they are not being "used" at the moment.
Future versions of perl may do something with the %_ hash - who
knows? The whole reason you cannot declare it with 'my' is because
it is a special global variable. You can localize these, but
not "my" them. Better to just create something like %subargs, or
even %_subargs if you really like the underscore. :)</P>
<P>Finally, as to your lack of editing problem, try complaining
at the [Editor Requests] section. It may be a bug in the code,
as sometimes (albeit very rarely) I cannot edit my own nodes either.</P>
11757
11812