in reply to Checking if hash value exists without implicitly defining it

The feature where

exists $hash{a}{b}{c}

... will cause $hash{a}{b} to spring into existence is called "autovivification" and is a built-in Perl feature; it's often useful, but not always. (And it's a really annoying word to type!) There's a module on CPAN called autovivification that gives you finer control over autovivification.

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name