1 use Data::Dumper; 2 use feature 'say'; 3 4 my $hashref; 5 my $code; 6 while(my $line = ) { 7 chomp $line; 8 my @pieces = split ':',$line; 9 my $val = pop @pieces; 10 $code .= ('$hashref'.join '',map { "->{'$_'}" }@pieces)."='$val';\n"; 11 }; 12 eval $code; 13 14 print Dumper $hashref; 15 16 __DATA__ 17 globalkey:key2:key3:key4:ARRAY VALUE 18 globalkey:key2:key3:key4:key5:ARRAY VALUE 19 globalkey:key2:key3:key4:key5:any arbitrary number of keys:ARRAY VALUE $VAR1 = { 'globalkey' => { 'key2' => { 'key3' => { 'key4' => 'ARRAY VALUE' } } } };