use strict; use warnings; use Date::Calc qw( Delta_Days ); use File::Spec qw( catfile ); my ($y, $m, $d) = (localtime())[5, 4, 3]; $y += 1900; $m += 1; my $dir = ...; opendir(my $dh, $dir) or die("Unable to open log dir \"$dir\": $!\n"); while (my $file_name = readdir($dh)) { my $file_full = catfile($dir, $file_name); next if ! -f $file_full; my $mtime = (stat($file_full))[9]; my ($fy, $fm, $fd) = (localtime($mtime))[5, 4, 3]; $fy += 1900; $fm += 1; my $delta_days = Delta_Days(($y, $m, $d), ($fy, $fm, $fd)); if ($delta_days == 1) { ...copy the file... } }