Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: The default hash - accident, coincidence or conspiracy?

by ank (Scribe)
on Jun 20, 2005 at 11:58 UTC ( #468289=note: print w/replies, xml ) Need Help??

in reply to The default hash - accident, coincidence or conspiracy?

Even though there is currently no special use attached to %_, I would stay away from using it - it can only confuse other programmers when they see $_{$key} or some variation of that.

-- ank

  • Comment on Re: The default hash - accident, coincidence or conspiracy?

Replies are listed 'Best First'.
Re^2: The default hash - accident, coincidence or conspiracy?
by jdporter (Canon) on Jul 02, 2005 at 17:33 UTC
    That's an argument against the entire Perl language, so I have to disagree. As long as one understands the special globality of the name (as pointed out in several other replies), one should no more avoid %_ than $_ or @_ — or, for that matter, any of the other funky globals.
      Well, maybe that's an argument against the entire Perl 5 language. One should also understand that the "special globality" of the special variables is going away in Perl 6, so something like %_ is going to become lexically scoped rather than globally scoped. So the p5-to-p6 translator is going to have to turn any Perl 6 use of %_ into something like %*_ to make sure the name stays global. Or if we're spiteful enough, it'll turn into %*_P5_EMULATED_GLOBAL_UNDERSCORE_PLEASE_AVOID_ or some such... :-)

      Similar considerations apply to many of the other special variables that need to be rehung on filehandle objects or lexical scopes. And some of the special variables are simply going away, and will have to be emulated by the translator some other way.

      So when people are tempted to rely on idiosyncracies of the Perl 5 implementation, I would remind them of this comment of Henry Spencer's from regexp.h:

      regnode program[1]; /* Unwarranted chumminess with compiler. */

      I don't see how that is an argument against the Perl language - just because you can do something in a certain way doesn't mean that it's desirable to do so.

      As a general rule, I try to avoid potentially confusing code whenever possible. Remember: a good programmer is someone who looks both ways before crossing a one way street.

      -- ank

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://468289]
[Eily]: I just wrote a oneliner to solve a (non perl) colleague's problem, and it worked on the first try
[Eily]: and he wasn't impressed
1nickt adds gingersnaps to the platter on the sideboard.
[Eily]: sure it was a pretty standard one liner (of the $h{$1} = $2 if /regex/; END { pp \%h; } variety), but he's not supposed to know that!
[Eily]: what's the point of writing perl if people aren't impressed :P

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2017-04-26 15:00 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (482 votes). Check out past polls.