in reply to Leak Hunting

The first thing I would do, now that you have a very simple test case, is to remove the ARSPerl call and replace it with your own call. First off, just return a huge hash. See if that causes the behavior you're seeing. Maybe, return a huge hash of hashes. See if that replicates. Then, keep getting bigger and bigger, deeper and deeper. Try and duplicate the problem and show it's a problem with the loop construct you have right now. If you cannot, your case that it's in ARSPerl is stronger.

Then, if you're positive it's in ARSPerl, then contact the people who wrote it and ask if you're using their module(s) wrong. Maybe this is a caveat they should've put in the POD, but didn't. Maybe they have a patch coming out (or even out!) soon. Maybe they would love to have you as a beta-tester for the patch.

Note that this doesn't mean you shouldn't look inside ARSPerl. But, a lot of that code may not be in Perl, but in other types of Perl-ish code. (Others could explain it better than I.)

------
We are the carpenters and bricklayers of the Information Age.

Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.