in reply to Combinatorics problem

You could try List::Comprehensions

use List::Comprehensions; local $"=","; print comp1 { "@_\n" } [1,2], [qw(a b)], [qw(# * &)];

Output:

1,a,# 1,a,* 1,a,& 1,b,# 1,b,* 1,b,& 2,a,# 2,a,* 2,a,& 2,b,# 2,b,* 2,b,&