use 5.016;
use utf8;
use encoding "utf8";
my @blacklist = (
'суика', 'шлюика', 'кна?иве?с', 'гнид(ану)?с',
);
my %t = (
а => 'аa', б => 'б6', в => 'вb', г => 'гr',
д => 'д', е => 'еeё', ж => 'ж', з => 'з3',
и => 'ий', к => 'кk', л => 'л', м => 'мm',
н => 'нh', о => 'оo0', п => 'п', р => 'рp',
с => 'сc', т => 'тt', у => 'уy', ф => 'ф',
х => 'хx', ц => 'ц', ч => 'ч4', ш => 'шщw',
э => 'э', ю => 'ю', я => 'я9', ь => 'ьъы6b',
);
s/(.)/(exists $t{$1} ? "(?:[$t{$1}][\\s\\p{punct}]*)" : $1)/ge for @blacklist;
for my $t (map { chomp; utf8
::decode($_); $_ } <>) { $t =~ s/[^\p{ascii}\p{cyrillic}]/!/gi;
for my $r (@blacklist) {
print " !!!" if($t =~ m/$r/xi); }
}
dXNlIDUuMDE2Owp1c2UgdXRmODsKdXNlIGVuY29kaW5nICJ1dGY4IjsKCm15IEBibGFja2xpc3QgPSAoCiAgICfRgdGD0LjQutCwJywgJ9GI0LvRjtC40LrQsCcsICfQutC90LA/0LjQstC1P9GBJywgJ9Cz0L3QuNC0KNCw0L3Rgyk/0YEnLAopOwoKbXkgJXQgPSAoCiAgINCwID0+ICfQsGEnLCAg0LEgPT4gJ9CxNicsICDQsiA9PiAn0LJiJywgINCzID0+ICfQs3InLAogICDQtCA9PiAn0LQnLCAgINC1ID0+ICfQtWXRkScsINC2ID0+ICfQticsICAg0LcgPT4gJ9C3MycsCiAgINC4ID0+ICfQuNC5JywgINC6ID0+ICfQumsnLCAg0LsgPT4gJ9C7JywgICDQvCA9PiAn0LxtJywKICAg0L0gPT4gJ9C9aCcsICDQviA9PiAn0L5vMCcsINC/ID0+ICfQvycsICAg0YAgPT4gJ9GAcCcsCiAgINGBID0+ICfRgWMnLCAg0YIgPT4gJ9GCdCcsICDRgyA9PiAn0YN5JywgINGEID0+ICfRhCcsCiAgINGFID0+ICfRhXgnLCAg0YYgPT4gJ9GGJywgICDRhyA9PiAn0Yc0JywgINGIID0+ICfRiNGJdycsCiAgINGNID0+ICfRjScsICAg0Y4gPT4gJ9GOJywgICDRjyA9PiAn0Y85JywgINGMID0+ICfRjNGK0Ys2YicsCik7CgpzLyguKS8oZXhpc3RzICR0eyQxfSA/ICIoPzpbJHR7JDF9XVtcXHNcXHB7cHVuY3R9XSopIiA6ICQxKS9nZSBmb3IgQGJsYWNrbGlzdDsKCmZvciBteSAkdCAobWFwIHsgY2hvbXA7IHV0Zjg6OmRlY29kZSgkXyk7ICRfIH0gPD4pIHsKICAgJHQgPX4gcy9bXlxwe2FzY2lpfVxwe2N5cmlsbGljfV0vIS9naTsKICAgcHJpbnQgJHQ7CiAgIGZvciBteSAkciAoQGJsYWNrbGlzdCkgewogICAgICBwcmludCAiICAhISEiIGlmKCR0ID1+IG0vJHIveGkpOwogICB9CiAgIHByaW50ICJcbiI7Cn0=