use strict;
use warnings;
use autodie;
use File::Find;
use File::Spec;
use File::Temp;
use Term::ANSIColor;
use open ':std' => ':encoding(UTF-8)'; #binmode( STDOUT, ":utf8" );
# Create Testing Environment
my $dir = File::Temp->newdir();
while (<DATA>) {
open my $fh, '>', File
::Spec->catfile($dir, $_); }
checkForSpecialChar( $dir );
sub checkForSpecialChar {
my ($source_dir) = @_;
find(
sub {
return unless -f
; #We want files only print s/([^-a-zA-Z0-9_.]+)/color('bold red') . $1 . color('reset')/eg ? "Detected: $_\n"
: " Clean: $_\n";
},
$source_dir
);
}
__DATA__
pdf-2014à014&7_06_64-Os_O&L,_Inc.pdf
pdf-20_06_04-O_OnLine,_Inc.pdf
pdf-20_0_0-Utà_d.wr.pdf
pdf-20_12_28-20.Mga_Grf.Fwd_Notice_KDJFI789&_JFK38.pdf
pdf-2_0_0-C_—_DUKE.pdf
pdf-2_1_3-f_s-M_F_D&A.pdf
pdf_-_2014à014&1007_0617_06264-O_O&L,_Inc.pdf
dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgYXV0b2RpZTsKCnVzZSBGaWxlOjpGaW5kOwp1c2UgRmlsZTo6U3BlYzsKdXNlIEZpbGU6OlRlbXA7CnVzZSBUZXJtOjpBTlNJQ29sb3I7Cgp1c2Ugb3BlbiAnOnN0ZCcgPT4gJzplbmNvZGluZyhVVEYtOCknOwojYmlubW9kZSggU1RET1VULCAiOnV0ZjgiICk7CgojIENyZWF0ZSBUZXN0aW5nIEVudmlyb25tZW50Cm15ICRkaXIgPSBGaWxlOjpUZW1wLT5uZXdkaXIoKTsKCndoaWxlICg8REFUQT4pIHsKICAgIGNob21wOwogICAgb3BlbiBteSAkZmgsICc+JywgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyLCAkXyk7Cn0KCmNoZWNrRm9yU3BlY2lhbENoYXIoICRkaXIgKTsKCnN1YiBjaGVja0ZvclNwZWNpYWxDaGFyIHsKICAgIG15ICgkc291cmNlX2RpcikgPSBAXzsKCiAgICBmaW5kKAogICAgICAgIHN1YiB7CiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgLWY7ICAgICNXZSB3YW50IGZpbGVzIG9ubHkKICAgICAgICAgICAgcHJpbnQgcy8oW14tYS16QS1aMC05Xy5dKykvY29sb3IoJ2JvbGQgcmVkJykgLiAkMSAuIGNvbG9yKCdyZXNldCcpL2VnCiAgICAgICAgICAgICAgICA/ICJEZXRlY3RlZDogJF9cbiIKICAgICAgICAgICAgICAgIDogIiAgIENsZWFuOiAkX1xuIjsKICAgICAgICB9LAogICAgICAgICRzb3VyY2VfZGlyCiAgICApOwp9CgpfX0RBVEFfXwpwZGYtMjAxNMOgMDE0JjdfMDZfNjQtT3NfTyZMLF9JbmMucGRmCnBkZi0yMF8wNl8wNC1PX09uTGluZSxfSW5jLnBkZgpwZGYtMjBfMF8wLVV0w6BfZC53ci5wZGYKcGRmLTIwXzEyXzI4LTIwLk1nYV9HcmYuRndkX05vdGljZV9LREpGSTc4OSZfSkZLMzgucGRmCnBkZi0yXzBfMC1DX+KAlF9EVUtFLnBkZgpwZGYtMl8xXzMtZl9zLU1fRl9EJkEucGRmCnBkZl8tXzIwMTTDoDAxNCYxMDA3XzA2MTdfMDYyNjQtT19PJkwsX0luYy5wZGYK