my $ref = \%database; foreach my $field (@$fields) { unless (defined $ref->{$field}) { $ref->{$field} = {}; } $ref = $ref->{$field}; }