use strict; use warnings; my %sequences; while (<>) { my $i = 1; for my $char ( split '', (split)[1] ) { $sequences{ $i++ }{$char}++; } } for my $pos ( sort { $a <=> $b } keys %sequences ) { my @charCount; while ( my ( $char, $count ) = each %{ $sequences{$pos} } ) { push @charCount, "$char:$count"; } print "POS #$pos " . ( join ' | ', @charCount ) . "\n"; }