my ( $first, @subkeys ) = split /\./, $key; my $last = pop @subkeys; my $ref = $properties{$first} ||= {}; $ref = $ref->{$_} ||= {} for(@subkeys); $ref->{$last} = $value;