use strict; use warnings; for my $number (1233456, 10, 1, 555789041) { my %digits; my @failDigits = grep {++$digits{$_} == 2} split '', $number; next if ! @failDigits; print "Number $number failed for:\n"; print " $_: $digits{$_} places\n" for @failDigits; }