Perl “申请”的情况如何;价值观;函数到散列或数组引用?

Perl “申请”的情况如何;价值观;函数到散列或数组引用?,perl,Perl,考虑到$struct是一个可以是散列或数组引用的数据结构,我有一些代码如下所示: for (ref($struct) eq "HASH" ? values %$struct : values @$struct) { # process $_ ... } 我想使用values函数的新功能(接受对未删减散列或数组的引用)来编写此函数,它在我的5.14.2版本中起作用: for (values $struct) { # process $_ ... } 漂

考虑到
$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)。有人知道现在的情况吗?实验结果如何?

它被标记为实验性的,因为这是一个有争议的变化。这是有争议的,因为它不适用于所有对散列的引用。*自从引入该功能以来,没有发现任何新的问题,但我认为没有人期望发现任何新的问题



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

我不明白我的原始代码怎么会失败,因为它使用
%$hash
,您能进一步解释吗?此外,我想知道的是,是否有人知道这种变化是否即将恢复,或者被认为是永久性的,或者它是否将永远是“实验性的”。对于一个幸运的散列来说,它失败了。通过重载呈现哈希接口的对象失败。文档中说它必须是未禁用的引用。当然是。如果这不是一个已知的问题,怎么会有争议?