use File::Spec; my $dir = "C:\"; sub recurseDir2 { foreach (glob shift) { if (-d) { print "Directory: '$_'\n" ; recurseDir2(File::Spec->catfile($_, '*')); next; } if (-f) { print "File: '$_'\n"; } } } recurseDir2($dir)