sub check { my ($name1, $name2) = @_; return unless length($name1) eq length($name2); my $letter_diff = 0; my $number_diff = 0; for (my $i = 0; $i < length($name1); $i++) { my $ch1 = substr $name1, $i, 1; my $ch2 = substr $name2, $i, 1; next if $ch1 eq $ch2; if ($ch1 =~ /\pL/ && $ch2 =~ /\pL/) {return if ++$letter_diff > 1; next} if ($ch1 =~ /\pN/ && $ch2 =~ /\pN/) {return if ++$number_diff > 1; next} return; # Differ in non-letter/non-digits } return $letter_diff == 1 && $number_diff == 1; }