in reply to Are defined or // garantee not to autovivify?

As other monks have pointed out, autovivification does not occur in the contexts you mention. Evaluating defined $hastest{abc}{def} will autovivify $hashtest{abc} (because you assumed the existence of a hash in that location in which to check for the key def), but will not autovivify def (because you tested whether that key specifically has a defined value).

Autovivification only occurs where the code assumes the existence of an aggregate and attempts to look up a value. Instead of throwing an error, Perl creates the implied aggregate.