for my $i (2..3) { local $/=","; for my $line (0..4**$i - 1) { # you were missing -1 print "line $line - "; my $num=$line; my @tuple; for my $j (0..$i-1) { unshift @tuple, $num%4; $num/=4; } print "@tuple\n"; } }