Если я правильно понял, вызов if (exists $ref->{A}->{B}->{$key}) { ... } будет spring в существование $ref->{A} и $ref->{A}->{B}, даже если они не существовали до if!
Это кажется крайне нежелательным. Итак, как мне проверить, существует ли "глубокий" хэш-ключ?