in reply to How to join values of the same key that is an array of hashes?
G'day BhariD,
Your "INPUT" data doesn't look like input data but a vague representation of data partway through processing. Your "OUTPUT" data doesn't show the structure you want. Making guesses for both of these:
#!/usr/bin/env perl use strict; use warnings; my %tmp; while (<DATA>) { chomp; my ($k0, $k, $v) = (split /\t/)[0, 2, 5]; $tmp{$k0}{k} = exists $tmp{$k0}{k} ? join ',' => $tmp{$k0}{k}, $k +: $k; $tmp{$k0}{v} = exists $tmp{$k0}{v} ? join ',' => $tmp{$k0}{v}, $v +: $v; } my %out = map { $_ => { $tmp{$_}{k} => $tmp{$_}{v} } } keys %tmp; # For testing use Data::Dumper; print Dumper \%out; __DATA__ p1 X cis X X 10 p1 X plat X X 20 p1 X gls X X NA p2 X cis X X 0 p2 X NA X X 9
Output:
$VAR1 = { 'p1' => { 'cis,plat,gls' => '10,20,NA' }, 'p2' => { 'cis,NA' => '0,9' } };
-- Ken
|
|---|