现在,旧软件中禁止使用标量的实验值:
$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@