Have you verified it's actually processing more than one file? You could step through the code with the perl debugger to determine if and where a memory leak is occuring.
Or you could simplify your program and wrap it in a find statement as a work-around to process individual files