$nl_iter = NestedLoops( \@Loops ); # some fancy magic for \@Loops while( my @items = $nl_iter->() ) { print join ", " @items; print "\n"; } #outputs: 1, y, 7 1, y, 14 1, y, 21 1, y, 28 1, n, 7 1, n, 14 ... 3, n, 21 3, n, 28