use strict; use warnings; my %allowed = map { $_ => 1 } q{a} .. q{o}; my @testStrs = qw{ acbbedfydaccdtg abcde }; my @unknown = (); foreach my $testStr ( @testStrs ) { @unknown = grep { ! $allowed{ $_ } } split m{}, $testStr; print qq{String - $testStr: }, @unknown ? qq{Unknown characters found: @unknown\n} : qq{Success\n}; } #### String - acbbedfydaccdtg: Unknown characters found: y t String - abcde: Success