(where @records is some collection of array refs like you have in your first line of code). Just push onto the appropriate array as you see each item. Having a two-layered hash seems redundant. Your while loop is simply making a copy of the data in %TEST, and doesn't seem to be doing anything to the data.my %construct; push @{ $construct{$_->[1]} }, $_->[2] for (@records);
How can I perform work on each of the values (i.e. maybe a join) and then print the key with its corresponding list of values?I'm not sure I really understand your question. To get back to your data to perform some work on it, you can use the while loop you already have (using $key and @values). I don't know what you mean by "maybe a join" -- since all the arrays are indexed by different keys. Perhaps an example data set would help. To just print the key with its associated list of values:
while (my ($k,$v) = each %construct) { print "$k has values: " . join(',', @$v) . "\n"; }
blokhead
In reply to Re: How to print a hash of arrays with the key
by blokhead
in thread How to print a hash of arrays with the key
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |