$VAR1 = [ undef, undef, 'NETLIST' ]; $VAR1 = [ undef, undef, undef, [ undef, undef, 'NETLIST' ] ]; $VAR1 = [ undef, undef, undef, undef, [ undef, undef, undef, [ undef, undef, 'NETLIST' ] ] ]; #### my $ranges = [ { I => 2 }, { I => 3, J => 2 }, { I => 4, J => 3, K => 2 }, { I => 5, J => 4, K => 3, L => 2 } ]; for my $h ( @$ranges ) { my $array = 'NETLIST'; for my $k (reverse sort keys %$h ) { my $a; $a->[$h->{$k}] = $array; $array = $a; } # ... print Dumper $array; } #### $VAR1 = [ undef, undef, 'NETLIST' ]; $VAR1 = [ undef, undef, undef, [ undef, undef, 'NETLIST' ] ]; $VAR1 = [ undef, undef, undef, undef, [ undef, undef, undef, [ undef, undef, 'NETLIST' ] ] ]; $VAR1 = [ undef, undef, undef, undef, undef, [ undef, undef, undef, undef, [ undef, undef, undef, [ undef, undef, 'NETLIST' ] ] ] ]; #### $array->[4]->[3]->[2] = $netlist;