sub consensus { # Picks an arbitrary result from # among the highest in case of tie. my %counts; $counts{$_}++ for @_; return ( sort { $counts{$b} <=> $counts{$a} } keys(%counts) )[0]; } { chomp( my $seq = <> ); chomp( my @lbls = <> ); s/^SEQ:// for $seq; s/^LBL:// for @lbls; for my $i (0..length($seq)-1) { printf("%s %s\n", substr($seq, $i, 1), consensus( map substr($_, $i, 1), @lbls ), ); } } #### my $consensus = ''; for my $i (0..length($seq)-1) { $consensus .= consensus( map substr($_, $i, 1), @lbls ); } print("SEQ: $seq\n"); print("LBL: $consensus\n");