$ perl -wMstrict -MData::Dump -e' my $x = $#{$$a{list}}; dd $a' { list => [] } $ perl -wMstrict -MData::Dump -e' my $x = $#{@$a{list}}; dd $a' Can't use an undefined value as an ARRAY reference at -e line 1. #### $ perl -MData::Dump -e' my %h = map {$_ => {v => "x$_"}} qw(a b c); dd @h{qw(a b c)}->{v};' "xc"