=item B<-a, --amount>
Search for files older than <amount> days, mandatory.
In two days, there are 2 * 24 * 60 * 60 or 172800 seconds, thus it seemed that the following was needed:
$amount = $amount * 24 * 60 * 60;
since one day equals 24 * 60 * 60 or 86400 seconds. Additionally, the following worked when I ran it using the above formula for $amount:
$result =
grep { /.+\.$suffix$/ and $time - ( $_->stat )[9] >= $amount }
io($dir)->all;
An equivalent search can be done using File::Find::Rule:
$result = File::Find::Rule->file()
->maxdepth(1)
->name(qr/.+\.$suffix$/i)
->mtime(">= $amount")
->in($dir);
And the following, too, but grepping on days old instead of using mtime:
$result = grep { -M >= $amount / 86400 } # Convert back to days
File::Find::Rule->file()
->maxdepth(1)
->name(qr/.+\.$suffix$/i)
->in($dir);
All three methods produced the same result, even when an equivalent constant was used for the days in the last grep.
After adjusting the $amount formula, your original code produced the same result, too:
$result =
grep { $_ == 1 }
map { $time - $_ >= $amount }
map { ( $_->stat )[9] } # e.g i'm interested in this...
grep { $_->name =~ /.+\.$suffix$/ } # ...and this
io($dir)->all;
Thus, all four code snippets produced identical results. |