print [("foo","bar")]->[1] returns bar, as I'd expect.
In addition to the answer you already got, please note that also with an anonymous arrayref those parens are not necessary, you can write ["foo","bar"] instead, and for ease of use, especially with a higher number of items, [qw/foo bar/].
With a hashref they're not only not necessary, but they also confuse the interpreter that choses to disambiguate the "wrong" (wrt your expectations) way in a situation like the one you've met. I believe you may also further disambiguate like thus:
$ perl -le 'print +{("foo","bar")}->{foo}' bar
Yep! It works... but of course there's no point doing so when simply ditching the parens would do in the first place. While we're here I'll also remind you that while your syntax is perfectly fine, people tend to prefer a fat comma a.k.a. => to separate key/value pairs since
In reply to Re: Getting element of anonymous hashref
by blazar
in thread Getting element of anonymous hashref
by pseudomonas
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |