my %unique; while ( my $line = ) { chomp $line; my ( $left, $right ) = split /\s+/, $line; push @{$unique{$left}}, $right; } foreach my $key ( sort keys %unique ) { print "$_\t"; foreach my $item ( @{$unique{$key}} ) { print "$item "; } print "\n"; }