On Thursday 18 Sep 2003 10:26 am, Marcus Claesson wrote:
> Hi People,
>
> 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!
>
> Marcus
Hi Marcus,
Hows about something like:
my @f=("1 a","2 b","2 c",
"3 a","4 d","4 d",
"4 e","4 f","5 g");
my %cols=();
foreach(@f) {
my ($col1,$col2)=split(/ */,$_);
$cols{$col1}.=$col2;
}
foreach (sort keys %cols) {
print join(",",split('',$cols{$_})),"\n";
}
If you actually want the commas in the scripts, you'll need to do it either
inside the first loop, or have a seperate loop just after.
Gary
--
Gary Stainburn
This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]