我正在尝试调试一个Perl脚本,该脚本给了我以下错误
标量上的实验键现在被禁止
这似乎是一个问题,我的系统有一个较新版本的Perl,但希望一些人可以建议一个快速修复。
问题是
foreach my $elemName(keys $grammar -> {$groupName})
语法定义为
my $grammar = {};
组名来自
foreach my $groupName (keys %$grammar)
我对perl了解不多,所以任何帮助都将不胜感激
我也有类似的问题
push($DbRef->{def_param}{$par_descr}->{dataset}, $blkDs);
带有错误现在禁止对标量进行实验性推送...靠近"$blkDs)"
我已经尝试了一些我发现的解引用的解决方案,但是语法对我来说非常混乱。
1条答案
按热度按时间x3naxklr1#
keys EXPR
和push EXPR, LIST
在5.14中作为实验特性引入。keys EXPR
和push EXPR, LIST
在5.20引入实验特性警告概念时开始警告。keys EXPR
和push EXPR, LIST
在5.24中被删除,因为实验被视为失败。(keys EXPR
的设计存在根本缺陷。)要获取hash的密钥,可以使用
keys %NAME
,也可以使用hash的延迟,例如keys %BLOCK
或keys EXRP->%*
。要获取数组的索引,可以使用
keys @NAME
。也可以使用数组的派生,例如keys @BLOCK
或keys EXRP->@*
。要将标量推到数组上,可以使用
push @NAME, LIST
,也可以使用数组延迟,如push %BLOCK, LIST
或push EXRP->@*, LIST
。就你而言,你想要
或
以及
或