Since you seemed interested.. here is my permutation generator.
It takes a base string (should be empty) as its first
argument, then refrences to as many lists as you want
as the other arguments and returns a refrence to a list
containg all the list-element concatination permutations:
my $c=shift @arrays;
I'm not really happy with the implementation of it, but
I like it in spirit (of course, I'm a big fan of recursive
algorithms to begin with).