Fwiw
use Path::Class qw(dir file);
use Time::localtime;
my $dirpath = dir("/waslogs1/vfoneLog/cposapp");
my $outfile = file("/home/cpos/CRM_Reports/output/filelist.txt")->open
+w;
my @names = grep {
my $st = $_->stat or die $!;
localtime($st->mtime)->mon == 8 && # 8 means September
localtime($st->mtime)->mday == 3
} $dirpath->children;
$outfile->print($_->basename, "\n") for @names;
$outfile->close or die $!;
Ok, it's a bit longer. However you don't suffer any problems like
- Incompatible versions of awk, ls
- File names with spaces, or file names which have a date in them
- Executable shell code in your $arr[2] variable
- Flexible handling of error conditions like when one of those two path names is missing.
- I think there is more