my %hash; for (@bigArray) { @tmp = split(\\+/); # split by '+' $node = 'value'; $node = {$_=>$node} foreach reverse @keys; .... }