鉴于$struct
是一个可以是散列或数组引用的数据结构,我有一些看起来像这样的代码:
for (ref($struct) eq "HASH" ? values %$struct : values @$struct) {
# process $_
...
}
我想使用values
函数的新功能(接受对未经处理的散列或数组的引用)来编写它,这在我的5.14.2版本中有效:
for (values $struct) {
# process $_
...
}
太漂亮了!
但是values
的文档说这个功能是“高度实验性的”。它已经出现了几个版本(据我所知,5.12到5.16.0)。有谁知道状态是什么?实验是如何运作的?
答案 0 :(得分:4)
它被标记为实验性的,因为它是一个有争议的变化。这是有争议的,因为它不适用于所有对哈希的引用。*自引入该功能以来没有发现任何新内容,但我认为没有人预料到会发现任何新问题。
* - values($hash)
可能会失败,values(%$hash)
会成功。您的原始代码具有完全相同的问题,因此values
的这种“限制”对您来说不是问题。