/ / Przetwarzanie HoAoHoAoHoAoH w Perlu - tablice, perl, hash, hash-of-hashes

Parsowanie HoAoHoAoHoAoH w Perlu - tablice, perl, hash, hash-of-hasze

Jestem nowy w Perlu i mam małe pojęcie o hashach. Mam hash tablicy tablicy hash tablicy tablicy hash tablicy tablicy hash (HoAoHoAoHoAoH) w następujący sposób.

%my_hash = (
key00 => "value00",
key01 => [
{  key10 => "value10",
key11 => "value11",
key12 => [
{   key20  => "value20",
key21  => "value21",
key22  => [
{   key30  => "value30",
key31    => [
{ color => "blue",  quantity => 10, boxes => [0,1,3] },
{ color => "red",   quantity => 2,  boxes => [2,3]   },
{ color => "green", quantity => 5,  boxes => [0]     },
],
},
],
},
]
}
]
);

Jak najłatwiej uzyskać dostęp do „koloru”, „ilości” i „pudeł”? Muszę też wykonywać operacje arytmetyczne na „ilościach”, takich jak 10 + 2 + 5 (ilość 0 + ilość 1 + ilość 2).

Odpowiedzi:

0 dla odpowiedzi № 1

To wygląda bardzo podobnie do problemu XY. Co próbujesz tutaj rozwiązać?

Możesz uzyskać dostęp do elementu struktury danych, takiego jak ten:

print $my_hash{key01}[0]{key12}[0]{key22}[0]{key31}[0]{color},"n";

Możesz także iterować dolne elementy za pomocą:

foreach my $something ( @{ $my_hash{key01}[0]{key12}[0]{key22}[0]{key31} } ) {
print $something->{"color"};
print $something->{"quantity"}
}

Ale to nie wygląda na prawdziwy problem - kim jesteś tak właściwie próbujesz osiągnąć? Mogę się domyślać, że próbujesz parsować XML lub podobny, w którym to przypadku jest prawie na pewno lepsze podejście.