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]

Reply via email to