use strict; use warnings; use Data::Diver qw( DiveVal ); use Data::Dumper; my $aokeys = [ [ 'a', 'b', 'c' ], [ 'a', 'b', 'd' ], [ 'b', 'b', 'b' ], ]; my $href = {}; foreach my $key_aref ( @$aokeys ) { DiveVal( $href, @$key_aref ) = 1; } print Dumper $href; #### $VAR1 = { 'a' => { 'b' => { 'c' => 1, 'd' => 1 } }, 'b' => { 'b' => { 'b' => 1 } } };