sub passes { my $test_number = shift() || die "no test number"; return 0 if ($test_number =~ /0/); # no zero return 0 if ($test_number =~ /(.).*\1/); # no dups for ( split(//,$test_number) ) { return 0 unless $test_number % $_ == 0 ; } return 1; }