use strict; use warnings; use 5.014; open my $inFH, q{<}, \ < ); close $inFH or die $!; my @letters = map { [ split m{} ] } @sequences; my $consensus = q{}; while ( @{ $letters[ 0 ] } ) { my $seq0 = shift @{ $letters[ 0 ] }; my $seq1 = shift @{ $letters[ 1 ] }; my $seq2 = shift @{ $letters[ 2 ] }; my $seq3 = shift @{ $letters[ 3 ] }; if ( $seq0 eq $seq1 and $seq0 eq $seq2 and $seq0 eq $seq3 ) { $consensus .= $seq0; } else { emitConsensus(); } } emitConsensus(); sub emitConsensus { say $consensus if length $consensus; $consensus = q{}; }