readdir returns a list of names, not of fully qualified paths. You can see that by printing out $_ and comparing that against "e:\\core\\ops_utilities\\$_". Only the latter will be what you expect.
Whenever you find things from a grep not returning what you think, it helps to modify the grep to tell you what it does:
my @files = grep { warn "Checking '$_' for -d:" . -d $_; !-d $_} readd +ir(DIR);
In reply to Re: -d on windows
by Corion
in thread -d on windows
by Scarborough
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |