say"@$_"for(*_=sub{!@_?():@_==1?map{[$_]}@{$_[0]}:map{my$x=$_;map{[$x,@$_]}_(@_[1..$#_])}@{$_[0]}})->([1,2],["a","b"],["#","*","&"]); __END__ 1 a # 1 a * 1 a & 1 b # 1 b * 1 b & 2 a # 2 a * 2 a & 2 b # 2 b * 2 b &