i have a array of filenames , and i have to traverse this array and check whether the content of ALL the files is empty.
Here is the code
foreach my $reportFile (sort { getDateInName($b) <=> getDateInName($a)} @ReportFiles)
{
my @fileData = readFile($reportFile);
if(!@fileData)
{
outputLog("FAIL: File Doesnt Contain Any Data.");
return;
}
}
But in the code above, iam returning even if a single file is empty, I would like to know how can we check whether ALL the content of ALL files is empty and then return.
So I would like to return only if none of the files in the array has content.
Even if one file has content i wouldnt return
Thanks
Use List::Util::all
:
Similar to
any
, except that it requires all elements of the@list
to make theBLOCK
return true. If any element returns false, then it returns false. If theBLOCK
never returns false or the@list
was empty then it returns true.
use List::Util 'all';
sub check_files {
...
warn( "All files empty" ), return
if all { -z } @_;
...
}
or
sub are_all_empty { all { -z } @_ }