in reply to Words generation algorithm

Or you could use glob.
my $pat = 'LLN'; my %pats = ( L => [ 'a'..'z' ], N => [ '0'..'9' ], ); ($_) = map "{$_}", join ',', @$_ for values %pats; (my $glob = $pat) =~ s/(.)/$pats{$1}/g; print("$_\n") for glob $glob;

Update: I'm blind. I hadn't seen blokhead's glob solution (only his NestedLoops solution) before posting this.