my($dir) = $ARGV[0] ||''; my($maxage) = $ARGV[1] ||0; $maxage = int $maxage; die "Can't operate without a target directory spec. Op aborted.\n" unless length $dir; # dir could be named "0" die qq[No such directory "$dir"\n] unless -e $dir; die "Need max allowed age spec for files. Op aborted.\n" unless $maxage; # zero values and non-numeric values not accepted. sub gothere { my ($ddir) = @_; $ddir=~ s|$|/|; local *PDFDIR; opendir(PDFDIR, $ddir) or die $!; my(@files) = map {$ddir . $_} readdir(PDFDIR); closedir(PDFDIR) or warn $!; print qq[Nothing to do. No files present in "dir".\n] and exit unless @files; foreach my $f (@files) { next if $f =~ /^\.+$/; #don't want . .. gothere($f) if -d $f; if ((int(-M $f) > $maxage) && (-f _) && $f=~/\.pdf$/i) {unlink $f or die qq[Can't unlink "$f"! $!];} print qq[Deleted "$f"\n]; } } gothere($dir); print "Done.\n\n" and exit;