Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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-differ...


I 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.


In 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.


$a->[2]->{"bar"} is the same as $a->[2]{"bar"} or as $a->[2]{bar}




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: