Beefy Boxes and Bandwidth Generously Provided by pair Networks Bob
We don't bite newbies here... much
 
PerlMonks  

Re: Hash values and constants

by ihb (Deacon)
on Jan 12, 2003 at 15:28 UTC ( #226275=note: print w/ replies, xml ) Need Help??


in reply to Hash values and constants

Good question.

First a quick note: Although %hash->{key} works you shouldn't do that. $hash{key} is the right way to use a hash. This is a known bug.

Anyhow, the problem boils down to that   $hash{KEY}
is interpreted as   $hash{'KEY'}
and that a bareword to the left of => also is interpreted as a string. So what you have is:

my %hash1 = ('TESTVALUE', 'OK'); my %hash2 = (123, , 1);
What you want to have is   my %hash1 = (TESTVALUE() => 'OK');
or   my %hash1 = (TESTVALUE, 'OK');
When getting the value with the constant you need to make it a non-bareword:   $hash1{+TESTVALUE}
or   $hash1{TESTVALUE()}
Update:
I intentionally avoided mentioning & as a way of disambiguate the constant. This is because it will confuse and mislead people to think that you can do &foo; instead of foo(), which isn't the case. See perlfaq7.

Hope I've helped,
ihb


Comment on Re: Hash values and constants
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://226275]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (3)
As of 2014-04-21 03:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (490 votes), past polls