现在禁止标量的实验值 – perl

前端之家收集整理的这篇文章主要介绍了现在禁止标量的实验值 – perl前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
现在,旧软件中禁止使用标量的实验值:

$link = Winners::Links->new();
my @fields = $link->column_names;     
foreach my $field ( values @fields[0]) {@H_502_12@ 
 

我试图做:

foreach my $field ( values {@fields[0]}) {

 foreach my $field ( values %{@fields[0]}) {

 foreach my $field ( values %@fields[0]) {@H_502_12@ 
 

不是他们的作品.任何想法应该怎么做?谢谢.

以下是@fields对象定义的更多内容

[[
  'id','entry','selection','status'
]]@H_502_12@

解决方法

这是在Perl 5.14中添加的,但在5.23中删除了:

Experimental %s on scalar is now forbidden (F) An experimental
feature added in Perl 5.14 allowed each,keys,push,pop,shift,
splice,unshift,and values to be called with a scalar argument. This
experiment is considered unsuccessful,and has been removed. The
postderef feature may meet your needs better.

因此,如果您在引用上使用它,请先取消引用它.有
由于你的原始代码,到达这里有些困惑:

foreach my $field ( values @fields[0]) {@H_502_12@ 
 

这里@fields [0]实际上是一个切片,它是有效的,并且有效.但
严格和警告你会得到类似的东西:

Scalar value @fields[0] better written as $fields[0] at - line x.@H_502_12@ 
 

事实上,如果你正在访问一个项目(如参考,可能在你的
case)你应该使用$fields [0]代替.所以首先纠正一下,
然后取消引用以符合标准的价值要求
(作为一个列表.它仅接受标量作为实验特征
过去).

foreach my $field ( values %{$fields[0]})@H_502_12@

猜你在找的Perl相关文章