繁体   English   中英

现在禁止标量上的实验键

[英]Experimental keys on scalar is now forbidden

我正在尝试调试一个给我错误的 Perl 脚本

现在禁止标量上的实验键

这似乎是我的系统有一个较新版本 perl 的问题,但希望有人可以建议快速修复。

有问题的行是

foreach my $elemName(keys $grammar -> {$groupName})

语法被定义为

my $grammar = {};

和 groupName 来自

foreach my $groupName (keys %$grammar)

我不太了解 perl,所以任何帮助将不胜感激

我对这条线有类似的问题

push($DbRef->{def_param}{$par_descr}->{dataset}, $blkDs);

现在禁止对标量进行错误实验推送......在“$blkDs)”附近

我已经尝试了一些我发现的关于取消引用的解决方案,但语法让我很困惑。

keys EXPRpush EXPR, LIST是在 5.14 中作为实验性功能引入的。

keys EXPRpush EXPR, LIST在 5.20 开始警告,当时引入了实验性功能的警告概念。

keys EXPRpush EXPR, LIST在 5.24 中被删除,因为实验被认为是失败的。 keys EXPR的设计存在根本性缺陷。)


要获取 hash 的密钥,您可以使用keys %NAME 您还可以使用 hash 引用,例如keys %BLOCKkeys EXRP->%*

要获取数组的索引,您可以使用keys @NAME 您还可以使用数组引用,例如keys @BLOCKkeys EXRP->@*

要将标量推送到数组,您可以使用push @NAME, LIST 您还可以使用数组引用,例如push %BLOCK, LISTpush EXRP->@*, LIST


在你的情况下,你想要

keys %{ $grammar -> {$groupName} }

或者

keys $grammar -> {$groupName} -> %*   # 5.24+

push(@{ $DbRef->{def_param}{$par_descr}->{dataset} }, $blkDs);

或者

push($DbRef->{def_param}{$par_descr}->{dataset}->@*, $blkDs);   # 5.24+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM