in reply to if (-d$_) failes because of white space

You are misdiagnosing the problem, because whitespace isn't a problem.
#!/usr/bin/perl -- mkdir 'i got white space'; mkdir 'i got white space/one'; mkdir 'i got white space/o n e'; mkdir 'i got white space/o ne'; mkdir 'i got white space/one'; opendir INDIR, 'i got white space'; print "($_)\n" for readdir INDIR; closedir INDIR; __END__ (.) (..) (o n e) (o ne) (one)