my %result; my @keys; while (<>) { chomp; my ($k, $v) = split /,/; push @keys,$k if (!exists $result{$k}); push @{$result{$k}}, $v; } for (@keys) { print join(",", $_, @{$result{$_}}), "\n"; }