But I don't think it's fair to call it a bug either.. not if something similar is being implemented in Perl6.No, that doesn't fly with me. There are hundreds of new syntax forms in Perl6.
In Perl5, the closest interpretation you could apply to %foo->{$bar} is "treat %foo in a scalar context" (which returns the N-over-M bucket usage string) "then dereference that" (as a string, it'd have to be a soft reference) "as a hash reference, and take the element with the key of $bar".
Sorry, that's just next to useless. And the implementers agreed. The only reason it worked is because %foo left the reference to foo on the stack for things like hash functions (keys, each, etc), and then the dereference arrow couldn't tell whether it was a reference from a real referencing, or from the literal name.
So, it worked only because it wasn't disallowed, as it should have been disallowed.
Please stop bringing irrelevant items into the discussion. Perl6 syntax is Perl6 syntax. Perl5 syntax had a meaning for that syntax, except the implementation was broken, and the meaning was almost always not what people accidentally typed. Hence, it is now just becoming forbidden to deal with all possible mistakes.
-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.
In reply to •Re: Re: •Re: Re: %h->{foo} vs. $h{foo}..
by merlyn
in thread %h->{foo} vs. $h{foo}..
by smferris
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |