use warnings; use strict; sub kmers { my $k = shift; my $alphabet = qw( A T G C ); my @bases = @$alphabet; my @words = @bases; for ( 1 .. --$k ) { my @newwords; foreach my $w (@words) { foreach my $b (@bases) { push (@newwords, $w.$b); } } @words = @newwords; } return @words; }