【发布时间】:2013-12-30 03:30:27
【问题描述】:
哈希引用的数组引用的(0 级或更多级别的哈希引用)的哈希。请注意,叶节点上方的级别将始终是数组引用,即使它们只有一个元素。
我需要通过保留哈希引用的顺序(按插入顺序)来获取 VALUE 的总和(在数组引用的数组中)。
例子:
1)
(
A => {
A1 => [
{ VALUE => 10 },
{ VALUE => 20 }
],
B1 => [
{ VALUE => 30 }
],
},
B => {
A1 => [
{ VALUE => 10 }
],
B1 => [
{ VALUE => 5 }
],
},
C => {
A1 => [
{ VALUE => 100 }
],
},
)
The required output of the above structure will be -
(
[A, A1, 30],
[A, B1, 30],
[B, A1, 10],
[B, B1, 5],
.
.
.
.
)
2)
(
A => [
{ VALUE => 10 },
{ VALUE => 20 }
],
B => [
{ VALUE => 30 }
],
)
The required output of the above structure will be -
(
[A, 30],
[B, 30]
)
【问题讨论】:
-
“通过保留哈希引用的顺序”是什么意思?它们的插入顺序是什么?按字母顺序排列?还有什么?
-
您需要使用函数 ref() 来确定您拥有的引用类型。散列中的键有自己的顺序,与插入顺序无关。您可以使用 sort(keys(%{$hash_ref}))。
-
@ThisSuitIsBlackNot 是按照它们插入的顺序
-
@AmanVidura iterating-hash-based-on-the-insertion-order
-
在上层你有一个 (key1, href1, key2, href2, ... ) 的数组,你可以使用索引访问这个数组。但是,在第二级中,您只有哈希并且没有保留的顺序。用 arrayref [] 替换它,你就会有秩序。
标签: perl key traversal hashref arrayref