in reply to How to print a hash of arrays with the key
(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
|
|---|