use strict; use warnings; my %res; while (<>) { my ( $name, $rest ) = split /\t/; push @{ $res{$name} }, $rest; } for ( sort keys %res ) { print "$_ ", join( "|", @{ $res{$_} } ), "\n"; }