Missing $ on loop variable #### my %lengths = ( 1 => {x => 1, y => 2, z => [1,2,3], }, 2 => {x => 2, y => 3, z => [2,3,4], }, 3 => {x => 4, y => 5, z => [5,6,7], }, ); for my $coord (keys %lengths) { for (@{$lengths{$coord}{z}}) { print "$_\n"; } } #### 1 2 3 5 6 7 2 3 4