>id1|various annotation1 sequence of characters1 >id2|various annotation2 sequence of characters2 ... >idN|various annotationN sequence of charactersN #### >id1-id15-id22|various annotation1 sequence of characters1 ... #### use strict; use warnings; my %res; while (<>) { chomp; my ( $name, $rest ) = split /\t/; push @{ $res{$name} }, $rest; } for ( sort keys %res ) { print "$_:", join( ",", @{ $res{$_} } ); print "\n"; }