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]