use DB_File; tie %ages, 'DB_File', $age_database, O_CREAT|O_RDWR, 0700; sub test_new { my ($mydir) = @_; my $new_one = 0; opendir(DIR, $mydir) or die("..."); while (my $file = readdir(DIR)) { next if $file !~ /^\.+$/; my $mtime = (stat($file))[9]; next if $mtime == $ages{$file}; $ages{$file} = $mtime; #the $file is new! Process it any way you like $new_one = 1; } closedir(DIR); return $new_one; }