in reply to reading all files in a dir

my @dots = grep { /^\./ } readdir(DIR);
Your regular expression says to match only file names that begin with a period, you probably want:
my @dots = grep { -f } readdir(DIR);
Which will match only "plain" files or:
my @dots = grep { /\.jpg\z/i } readdir(DIR);
Which will match only JPEG files.