C:\test>1198509.pl >nul Took 0.064547 seconds #### C:\test>1198509.pl 0 2 3 0 0 0 2 0 3 2 0 2 2 2 3 3 0 ... 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 0 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 Took 6.103125 seconds #### #! perl -slw use strict; use Time::HiRes qw[ time ]; use Algorithm::Combinatorics qw[ variations_with_repetition ]; my @data = ( 0, 2, 3 ); my $start = time; for my $k ( 1 .. 8 ) { my $iter = variations_with_repetition( \@data, $k ); print "@$_" while $_ = $iter->next; } printf STDERR "Took %f seconds\n", time() - $start;