Hacker News new | past | comments | ask | show | jobs | submit login

The quick way to remember this is that hashes naturally consume and supply lists. When a hash consumes a list, it alternates to assigning list items as keys and values. When a hash is supplied on the right hand side of an assignment, it's keys and values are supplies as a list in alternating order. Values for a hash or array must be a regular variable (scalar), or a reference to some item (such as an object, hash, array or scalar).



It also helps to know that '=>' is really just syntactic sugar for a comma that also implicitly quotes the word to its left, and not a special operator for hashes. These 2 lines are the same (in Perl 5):

    %hash = (hello => 'there');
    %hash = ('hello', 'there');
This is also perfectly valid (though non-idiomatic) Perl 5:

    print Hello => ' ' => there => "\n";


Yeah, I had quite a bit more in my reply originally, including that and code snippets with assignment back and forth between a hash and array, but decided I didn't need to turn this article into a Perl 5 tutorial ;)




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

Search: