in reply to Hashes with Multiple Keys and Combining Them
use strict; use warnings; open my $inFH, q{<}, \ <<'EOD' or die qq{open: << HEREDOC: $!\n}; 1,XYZ,desc,PDF 2,YGH,desc,KMN 1,XYZ,desc,QFZ EOD my %ids; while ( <$inFH> ) { chomp; my ( $key, $value ) = m{^(.*,)(.*)$}; push @{ $ids{ $key } }, $value; } print qq{$_@{ [ join q{,}, @{ $ids{ $_ } } ] }\n} for keys %ids; close $inFH or die qq{close: << HEREDOC: $!\n};
The results.
1,XYZ,desc,PDF,QFZ 2,YGH,desc,KMN
Note that hashes are not ordered so if you want to impose a particular order in your output file you will need to sort the keys in some fashion. This exercise is left to the reader.
I hope this is useful.
Cheers,
JohnGG
Update: Corrected typo, s/nor/not/
|
|---|