Click to See Complete Forum and Search --> : How can I group lines in a file?


ktsirig
05-16-2009, 12:45 PM
Hello all,
I was wondering, if you have a file like the following:

jim 14
john 23
ernest 38
matilda 43
jim 34
ernest 27
john 44
matilda 22


how can you print

jim 14,34
john 23,44
ernest 38,27
matilda 43,22


I have been trying something with hashes, but didn't get me anywhere...

Nedals
05-16-2009, 01:05 PM
my %hash;
while (<DATA>) {
my ($name, $number) = split(/\s+/);
if (exists $hash{$name}) {
$hash{$name} .= ",$number";
next;
}
$hash{$name} = $number;
}
for (keys %hash) { print "$_ $hash{$_}\n"; }
exit;

__DATA__
jim 14
john 23
ernest 38
matilda 43
jim 34
ernest 27
john 44
matilda 22

aj_nsc
05-16-2009, 01:18 PM
Haven't done perl in a loooooooong time, but this was fun:


my %namesAges;
open (MYFILE, "srcfile.txt");
while(<MYFILE>) {
($name,$age) = split(' ',$_);
if(exists($namesAges{$name})) {
$namesAges{$name} = $namesAges{$name}.",".$age;
} else {
$namesAges{$name} = $age;
}
}
close(MYFILE);