I need to convert a flat list of keys into a nested hash, as follow:
my $hash = {};
my @array = qw(key1 key2 lastKey Value);
ToNestedHash($hash, @array);
Would do this:
$hash{'key1'}{'key2'}{'lastKey'} = "Value";
I need to convert a flat list of keys into a nested hash, as follow:
my $hash = {};
my @array = qw(key1 key2 lastKey Value);
ToNestedHash($hash, @array);
Would do this:
$hash{'key1'}{'key2'}{'lastKey'} = "Value";
Thxs for the good stuff!!!
I did it the recursive way:
It would be interesting to have a performance comparison between all of these solutions...
I reckon this code is better - more amenable to moving into a class method, and optionally setting a value, depending on the supplied parameters. Otherwise the selected answer is neat.
Explanation:
We know:
my $h = {}; my $a = [];
).It might be more explicit to do this:
But owing to repeated use of these reference idioms, I wrote that line totally as it was and tested it before posting, without error.
As for alternatives, the following version is "easier" (to think up)
But about 6-7 times slower.