http://qs321.pair.com?node_id=805260


in reply to Re^5: hash & arrays
in thread hash & arrays

Your example code isn't doing what you're saying it is...

my %hash = []; #explicitly create a hash of arrays structure for clari +ty

This doesn't mean anything, and is in fact an error; you can't assign a single scalar (an array reference in this case) to a hash.

#push your items into the array - this will create the hash $userid if + it dosent already exist push @{$hash{$userid}}, ($title, $adjst, $adjst2, @{$linex}) #@{$linex) says i am a list

$userid isn't a hash. %hash is. $hash{$userid} is a hash element. In saying @{$hash{$userid}} you're asking perl to treat that hash element as an array reference, and dereference it; in this case, the element doesn't exist, and so is created as what it ostensibly is (an array ref), and then used via push to push those elements onto it. The parenthesis are unnecessary and don't mean anything here.

Also, $linex in his code sounds like a string, not an array ref.