I think I need a little more info about your program structure. It looks like new threads invoke 'do_handler', but it is not clear how this, in turn, invokes and manages FileList. I would not so much worry about perl's memory usage -- 125M is not all that much. Much more troubling is the 75% CPU. If FileList is supposed to be doing most of the work, and the perl part is simply 'glue' taking output from FileList and inserting it into MySQL, then it should not be doing much. If it is not too large, could you post the do_handler, and what you are doing to put stuff into MySQL?