use warnings; use strict; use Data::Dumper; my @keys="a".."d"; my %hash=(); my $href=\%hash; my $lastkey= pop @keys; for my $key (@keys) { $href = $href->{$key} //= {} ; } $href->{$lastkey} = ""; print Dumper \%hash;