With the above code the usage stays steady at 23MB, compared to the hundreds of MBs.
Certainly curious to hear how to deal with this, I will indeed need multiple child threads running. I thought that PERL should be doing garbage collection once the threads terminate.