9 ms·
Why is there an arrow between $a and [2], but not between [2] and {“bar”}, in this? $a->[2]{"bar"} The highest rated SO answer here explains a little, and i
by kstrauser 1y ago
Why is there an arrow between $a and [2], but not between [2] and {“bar”}, in this?
$a->[2]{"bar"}
The highest rated SO answer here explains a little, and it’s the kind of situational nitpickiness that let to me dropping Perl like a hot potato when something better matching my mental model came across my radar: https://stackoverflow.com/questions/1817394/whats-the-difference-between-a-hash-and-hash-reference-in-perl https://stackoverflow.com/questions/1817394/whats-the-differ...
- Enk1du 1y agoI suppose it's because very soon people got tired of writing $a->[2]->{"bar"} which is equivalent and also works, but suffers from the explosion of punctuation that Perl often gets criticised for. There's an element of Do What I Mean where the first arrow says this is a reference and work the rest out for me.
- odc 1y agoIn Perl -> is the dereference operator, similar to C. So when you see $a->[2]{"bar"} then $a is an array reference where each item is a hashmap. But with $a->[2]->{"bar"} then $a is an array reference where each item is a reference to a hashmap.
- zaucker 1y ago$a->[2]->{"bar"} is the same as $a->[2]{"bar"} or as $a->[2]{bar}