Perl新版本报错:Experimental keys/push on scalar禁用,求快速修复方案
修复Perl新版本中的两个实验性语法报错
错误1:Experimental keys on scalar is now forbidden
问题原因
$grammar->{$groupName}是哈希引用,旧版Perl允许直接对哈希引用使用keys(实验性语法),但新版本Perl已禁止这种写法,要求明确解引用哈希引用。
修复代码
将原代码:
foreach my $elemName(keys $grammar -> {$groupName})
修改为:
foreach my $elemName(keys %{ $grammar->{$groupName} })
%{ ... }用于将哈希引用强制解引用为哈希,让keys能正确遍历其键名。
错误2:Experimental push on scalar is now forbidden
问题原因
$DbRef->{def_param}{$par_descr}->{dataset}是数组引用,旧版Perl允许直接对数组引用使用push(实验性语法),新版本要求必须明确解引用为数组。
修复代码
将原代码:
push($DbRef->{def_param}{$par_descr}->{dataset}, $blkDs);
修改为:
push @{ $DbRef->{def_param}{$par_descr}->{dataset} }, $blkDs;
@{ ... }用于将数组引用强制解引用为数组,让push能正确向其中添加元素。
内容的提问来源于stack exchange,提问作者Shawn Lammers
相关产品推荐
相关产品推荐

