http://qs321.pair.com?node_id=918220


in reply to converting a text into a hash datastructure

You could do it by hand, or you could use a module: Data::Diver. You can even check the source of the latter to do the former.

Hint: you have to split the string into a list, and in turn, for each item but the last two, add a new hashref at that level if one didn't already exist. Keep that reference in a variable for the next level.

$key = 'a.b.c.d'; @list = split /\./, $key; my %hash; my $ref = \%hash; foreach (@list[0..$#list-2]) { $ref = $ref->{$_} ||= {}; } $ref->{$list[-2]} = $list[-1]; use Data::Dumper; print Dumper \%hash;

BTW I think your API interface is badly designed: you should have a separate value for the keys ("a.b.c") and for the value ("d"). As it is now, I expect trouble.