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
In reply to Re: How to join values of the same key that is an array of hashes?
by kcott
in thread How to join values of the same key that is an array of hashes?
by BhariD
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |