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>) {
    chomp;
    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
