opendir(D, "unfinished/") or die "unable to open unfinished/: $!\n"; my @files = readdir(D); closedir(D); for (@files) { next unless ($file =~ m/^(\d\d\d\d)-(\d\d)-(\d\d)$/); my ($year, $month, $day) = ($1, $2, $3); eval { ... process download for $year/$month/$day ... ... in case of an error, raise an exception with die ... }; if ($@) { warn "downloading for $year/$month/$date failed: $@\n"; } else { rename("unfinished/$file", "completed/$file"); } } #### my @t = localtime(time-86400); my $y = $t[5]+1900; my $m = $t[4]+1; my $d = $t[3]; my $file = sprintf("%04d-%02d-%02d", $y, $m, $d); open(F, ">", "unfinished/$file"); close(F);