in reply to Combinatorics problem

You could also use the glob built-in function although you may need to take care if your lists contain metacharacters significant to glob.

$ perl -le 'print for glob( q{{a,b}{c,d}} );' ac ad bc bd $
$ perl -le ' > @lists = ( > [ qw{ 1 2 3 } ], > [ qw{ a b } ], > [ qw{ X Y Z } ], > ); > $globStr = > join q{}, > map { qq{{@{ [ join q{,}, @$_ ] }}} } > @lists; > print for glob $globStr;' 1aX 1aY 1aZ 1bX 1bY 1bZ 2aX 2aY 2aZ 2bX 2bY 2bZ 3aX 3aY 3aZ 3bX 3bY 3bZ $

I hope this is helpful.

Cheers,

JohnGG