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
--
<http://www.dave.org.uk>

"The first rule of Perl club is you do not talk about Perl club."
-- Chip Salzenberg