I've found that a recursive subroutine seems to always leak some memory in linear relation to the amount of recursive calls. It's not strictly a 'leak' in that the memory used is only as big as the largest number of calls used.
Even Data::Dumper does it if it's not using it's &Dumpxs method, so it looks like a perl 'feature' to me.