use File::Find qw(find); my $i = -1; find sub { return unless $File::Find::prune = ++$i; print "directory: $File::Find::name\n" and return if -d $_; print "file: $File::Find::name\n" and return if -f $_; }, "D:/test_dir";