use warnings; use strict; my @array = qw(A T C G); my $word_length = 4; my $max = ($#array+1)**$word_length ; my @count; $count[$_] = 0 for 1..$word_length; my $mainc = 0; for my $mainc (1..$max){ print $array[$count[$_]] for 1..$word_length; $count[1]++; for my $counter (1..$word_length) { if ($count[$counter] == $#array){ $count[$counter] = 0; $count[$counter + 1]++; } } print "\n"; $mainc++; }