#!/usr/bin/perl use strict; use warnings; use Data::Diver qw( DiveVal ); use Data::Dumper qw( Dumper ); my %hash; my @keys = ( 5, 6 ); # $hash{root}...{2} = 'b'; DiveVal( \%hash, map \$_, 'root', @keys, 2 ) = 'b'; print Dumper(\%hash);