use warnings; use strict; sub iter { my ($n, @old_cand) = @_; my @new_cand; foreach my $cand (@old_cand) { for my $num (1..9) { next if $cand =~ /$num/; my $new_c=$cand.$num; if ($new_c % $n == 0) {push ( @new_cand, $new_c)} } } return @new_cand; } my @c=(1..9); for my $i (2..9) { @c=&iter($i, @c); } print "@c\n";