This is a pervasive gotcha in perl. You need to check the existence of any parent references whose existence you are unsure of before checking their children. Otherwise the parents will pop into existence.
Comment on Re: Perl autovivifyies object property when using exists