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

You need some diagnostics, friend (and code tags...):

use strict; use warnings; use Data::Dumper::Simple; foreach my $d (@dir) { if (-d $d) { print $d, "is a directory.\n"; } else { warn "Not a directory:".Dumper(\$d); } }

Try that and let us see your output. FWIW, you should also take a moment and read How (Not) To Ask A Question to help you get better answers faster.

<radiant.matrix>
Ramblings and references
“A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort.” Herm Albright
I haven't found a problem yet that can't be solved by a well-placed trebuchet