my %hash_1 = (number => 123, name => aa, stuff => \@xx); my %hash_2 = (number => 124, name => bb, stuff => \@yy); my %hash_3 = (number => 125, name => cc, stuff => \@zz); #if you change struct, you have to change every instance. ..... ..... ..... my $aa = C_struct->new(123,'aa', [1,2,3]); my $bb = C_struct->new(234,'bb', [2,3,4]); #every instance is spawned by the same object.