my @parents = qw( a b c ); my @children = qw( 1 2 3 4 ); my %abc :shared; %{ $abc{ $_ } //= &share({}) } = map{ $_ => 1 } @children for @parents; pp \%abc;