This doesn't fit my experience, and I have plenty of experience. Can you reduce
it down to a small reproducible test case? I'd bet the rent money on either
something else going on (very likely) or a bug in Perl (very unlikely),
but it's clearly not the way it should work, in my understanding.