sub consensus { my %counts; $counts{$_}++ for @_; my ($consensus) = sort { $counts{$b} <=> $counts{$a} } keys(%counts); return ( $counts{$consensus} / @_ >= 0.6 ? $consensus : 'A' ); } { my $num_cols = @{ $AoA[0] }; my @combined; for my $col (0..$num_cols-1) { push @combined, consensus( map $_->[$col], @AoA ); } print(join(', ', @combined), "\n"); }