in reply to Generating combinatorial strings

Just for completeness sake here is my slighty modified solution from the previous question, the changes are marked:

#!/usr/bin/perl use warnings; use strict; my (@limits)= reverse (3,2,3); #changed my $length= @limits; #changed my @number= (1) x $length; while (@number) { printnumber(@number); @number= addto(@number); } sub addto { my @number= @_; while (1) { my $carry=1; my $i=0; #changed foreach (@number) { $_+= $carry; $carry=0; if ($_>$limits[$i++]) { #changed $_=1; $carry=1; } } @number=() if ($carry==1); return(@number); } } sub printnumber { my @number= @_; print reverse(@number),"\n"; } #prints 111 112 113 121 122 123 211 212 213 221 222 223 311 312 313 321 322 323

Note that the length (number of digits) is now derived from the length of the limits array