use Algorithm::Loops qw( NestedLoops ); NestedLoops(\@list, sub { print(join(',', @_), "\n"); }, );