in reply to Re: Why are these undefs different?
in thread Why are these undefs different?

Out of curiosity, why does this still work

My understanding of autovivification is that by default it doesn't prevent the dereferencing, it prevents the creation of the new refs (= the autovivification). Compare:

$ perl -MData::Dump -e 'my $x; $x->[0]->{"aaa"}; dd $x' [{}] $ perl -MData::Dump -M-autovivification -e \ 'my $x; $x->[0]->{"aaa"}; dd $x' undef

So in the second case $x was not autovivified to an arrayref containing a hashref. If you want the pragma to throw errors, you need to tell it:

$ perl -MData::Dump -M-autovivification=strict,fetch -e \ 'my $x; $x->[0]->{"aaa"}; dd $x' Reference vivification forbidden at -e line 1.