# traverse($hoh, @key): return value of $hoh->{$key[0]}...{$key[-1]} sub traverse { my $hoh = shift; $hoh = $hoh->{$_} for (@_); $hoh } # set($hoh,$val, @path): ... sub set { my $hoh = shift; my $val = shift; my $last = pop @_; $hoh = $hoh->{$_} for (@_); $hoh->{$last} = $val }