#!/usr/bin/perl -w use strict; use Algorithm::Loops 'NestedLoops'; my $depth= 4; my $iter= NestedLoops( [ [0..1], map { my $end= 2*$_+1; sub { [$_+1..$end] } } 1..$depth-1, ], ); while( my @list= $iter->() ) { output(@list); } sub output { print join '', @_, "\n"; }