use strict; use warnings; my $str = q{abcdceefghfty}; for my $ch (qw(a b c d e f g)) { print qq{"$ch" Unique in "$str"\n} if $str !~ m{($ch)(?=.*\1)}; } #### "a" Unique in "abcdceefghfty" "b" Unique in "abcdceefghfty" "d" Unique in "abcdceefghfty" "g" Unique in "abcdceefghfty" #### use strict; use warnings; my $str = q{abcdceefghfty}; for my $ch (q{a} .. q{z}) { my $matchTxt = q {\A} . qq{[^$ch]*($ch)} . q {(?!.*\1)}; my $rxUniq = qr{$matchTxt}; print qq{"$ch" unique in "$str"\n} if $str =~ $rxUniq; }