my @arr = my @results = ('#','*',0..9); print join("\n",@results); # 1st lot foreach (0..10) { my @results2; foreach my $m (@results) { push @results2, map {$m.$_} @arr; } @results = @results2; print join("\n",@results); # subsequent }