./rootdir ./rootdir/folder1 has files file1.txt, file2.txt,file3.txt..etc #### ./rootdir/folder2 has files file1.txt, file2.txt,file3.txt..etc too #### ./rootdir/folder1/List1.txt ./rootdir/folder2/List2.txt #### use strict; use warnings; use File::Find::Rule; my $directory = './rootdir'; my @subdirs = File::Find::Rule->directory->in( $directory ); foreach my $dir (@subdirs) { #print "$dir\n"; next if ($dir eq ".."); if (-d $dir) { my $curr_dir = $dir; open (my $OUTFILE, '>>', "$curr_dir/List.txt") or die "Cant open '$dir.txt!' $!"; my @files = File::Find::Rule->file() ->name( '*.*' ) -> in( $dir); foreach $_ (@files) { print $OUTFILE "$_\n"; } close $OUTFILE; } } }