Marcus Claesson wrote: > > Hi People, Hello,
> I have a silly little list-parsing problem that I can't get my head > around, and I'm sure some of you have come across it before. > > I have a list like this: > > 1 a > 2 b > 2 c > 3 a > 4 d > 4 d > 4 e > 4 f > 5 g > > and I want to make the first column non-redundant and collect the second > column values on the same line, like this: > > 1 a > 2 b,c > 3 a > 4 d,e,f > 5 g > > Please note that line 4 only has one 'd'. > > I've tried with both hashes and arrays (don't want to confuse you so I > won't display them here), but nothing really works... > > I would really appreciate any help! Here is one way to do it: #!/usr/bin/perl -w use strict; my %data; while ( <> ) { my ( $key, $val ) = split or next; if ( exists $data{ $key } ) { $data{ $key }{ $val }++; } else { print "[EMAIL PROTECTED] join ',', sort keys %{$data{$_}} ]}\n" for keys %data; %data = ( $key => { $val, 0 } ); } } print "[EMAIL PROTECTED] join ',', sort keys %{$data{$_}} ]}\n" for keys %data; __END__ John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]