将“值”函数应用于散列或数组引用的状态是什么?

时间:2012-10-09 18:21:54

标签: perl

鉴于$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)。有谁知道状态是什么?实验是如何运作的?

1 个答案:

答案 0 :(得分:4)

它被标记为实验性的,因为它是一个有争议的变化。这是有争议的,因为它不适用于所有对哈希的引用。*自引入该功能以来没有发现任何新内容,但我认为没有人预料到会发现任何新问题。


* - values($hash)可能会失败,values(%$hash)会成功。您的原始代码具有完全相同的问题,因此values的这种“限制”对您来说不是问题。