in reply to Question related to the use of constants

In a hash element lookup, if what's in the { } is something that follows the rules for identifier names, it is interpreted as just a string, not a function call, a builtin, a constant or whatever. So $x{CONST1} is $x{"CONST1"}, not $x{10}.

There are various ways to make this work; I like $x{+CONST1}. (Yes, that works even for constants that have non-digits, leading zeros, whatever.)

Sometimes the reverse gotcha happens: $x{0001} is $x{1}, not $x{"0001"}, because 0001 is not an valid identifier. (Hmm, $0001 seems to work, when it shouldn't according to perldata.)   Another strange case is $x{a'b} which is actually $x{"a::b"), because ' is the old way of saying ::.

  • Comment on Re: Question related to the use of constants