in reply to extracting all possible n-mers from an array

Another solution, this one relying on base conversion (base 10 to base 6):
my @letters = qw( A B C D E F ); for (0..6**4-1) { use integer; my $num = join '', map $letters[$_], $_/6/6/6 % 6, $_/6/6 % 6, $_/6 % 6, $_ % 6; print("$num\n"); }

If @letters and $len are variable, try this generalization:

my @letters = qw( A B C D E F ); my $len = 4; sub convert { my ($num) = @_; use integer; my $base = @letters; my $rv = ''; for (1..$len) { $rv = $letters[$num % $base] . $rv; $num /= $base; } return $rv; } print(convert($_), "\n") for 0..@letters**$len-1;