my %struct = (data => 1, pointers => []); my $struct_ref = \%struct; #### my $struct_ref = {data => 1, pointers => []}; #### my @array_of_structs = (\%struct1, $struct2_ref, {data => 1, pointers => []}); push @array_of_structs, \%new_struct; #### my $first_data = $array_of_structs[0]{data}; push @{ $array_of_structs[2]{pointers} }, 'abc', 'def'; my $third_struct_second_pointer = $array_of_structs[2]{pointers}[1];