in reply to Memory Management Problem
Depending on the actual content of your report, you may want to push some of the work you're currently doing in perl out to the find command. You could use the -cnewer option to find to get a list of files that are newer than the timestamp of some other file. So, after each scan, you touch a special file (maybe that's your benchmark_file) and then use that next time to find out which are newer. man find.
Using that information (and some other standard unix utilities) you should be able to generate a file with all of the files that were there yesterday and another file with all of the files that are new today. And then just read those two files a line at a time for your report (again, depending on the exact output of your report).
Just some ideas ...