my @k = qw( a b c ); $my_hash_ref->{$k[0]}->{$k[1]}->{$k[2]} = 2; my $r = $my_hash_ref; $r = $r->{$_} foreach @k; $r = 3; print($my_hash_ref->{$k[0]}->{$k[1]}->{$k[2]}, "\n"); # 2