#!/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