PERL_DESTRUCT_LEVEL If you want to run any of the tests yourself manually using e.g. valgrind, please note that by default perl does not explicitly clean up all the memory it has allocated (such as global memory arenas) but instead lets the exit() of the whole program "take care" of such allocations, also known as "global destruction of objects". There is a way to tell perl to do complete cleanup: set the environment variable PERL_DESTRUCT_LEVEL to a non-zero value. The t/TEST wrapper does set this to 2, and this is what you need to do too, if you don't want to see the "global leaks": For example, for running under valgrind env PERL_DESTRUCT_LEVEL=2 valgrind ./perl -Ilib t/foo/bar.t