in reply to Strange Hash related bug, keys are created by themselves!

As thoroughly explained by previous answers, not strange, not an issue, not a bug. Autovivification is a well-known and documented feature of Perl.

If you want to check for the existence of keys without autovivifying, you can avoid writing long chains of if (exists $h{a} && exists $h{a}{b} && exists $h{a}{b}{c} &&... by using the Dive function from Data::Diver. This is, IMO, highly preferable to using no autovivification, as it does not break standard Perl behavior.