in reply to Recursive hash assignment
This seems to do the trick. I've tested it to 4 keys. There's probably a neater way to write it.
Taking this logic and using it in your app is left as an exercise for the reader :)
--#!/usr/bin/perl -w use strict; use Data::Dumper; my %data; while (<DATA>) { chomp; my ($val, @keys) = split; my $lastkey = pop @keys; my $hashref = \%data; foreach my $k (@keys) { $hashref->{$k} ||= {}; $hashref = $hashref->{$k}; } $hashref->{$lastkey} = $val; } print Dumper \%data; __END__ val1 keyA keyX foo key1 val2 keyA keyY bar key2 val3 keyB keyZ baz key3
"The first rule of Perl club is you do not talk about
Perl club."
-- Chip Salzenberg
|
|---|