my $dir = "/cdw/home_dir/s006258"; my @dirs; my @files; sub do_stuff { if ( -d $_ ) { push @dirs, $File::Find::name; } else { push @files, $File::Find::name; } } find(\&do_stuff, $dir); foreach my $name (@dirs, @files) { print FILE $name, "\n" if -d $name or -T $name; }