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 № 1To 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.