arrays - Perl 数组哈希 - 严格的 refs
问题描述
这对大多数人来说可能很简单,但我有一个不使用严格的 Perl 脚本,并使用以下语法:
$welcome_data[$x]{email} = $data[0];
它工作正常。现在,当我启用严格时:
$welcome_data[$x]{email} = $data[0];
Can't use string ("") as a HASH ref while "strict refs" in use
谁能帮助我做错了什么?
非常感谢
解决方案
$welcome_data[$x]{email}
简称
$welcome_data[$x]->{email}
换句话说,$welcome_data[$x]
应该是一个参考(或 undef [1])。但是,在您的情况下,它包含一个空字符串。就像你在做的那样
${""}{email}
这显然不是你想做的。但幸运的是,这正是 strict refs 旨在捕捉的那种错误。现在,您可以在将空字符串分配给$welcome[$x]
.
如果它是 undef,Perl 将自动为您提供对新匿名哈希的引用,就好像您使用过
( $welcome_data[$x] //= {} )->{email}
推荐阅读
- c# - 如何覆盖任何 DbContext 全局的 SaveChangesAsync?
- reactjs - 反应:useState 还是 useRef?
- matlab - 更改图例的图例,使各行共享相同的图例条目
- java - E4 无法在类变量上自动注入 MApplication
- ios - 链接器命令在tipsi-twitter 中失败,错误代码为 1
- aws-sdk - 是否可以在不使用 cli 的情况下使用放大框架?
- mysql - 从 2 个表中选择会导致错误
- sqlite - SQLite:.dump 是否复制或重新创建索引?
- solver - GAMS:目标函数中的双指数
- angular - 必须为 formcontrol 提供一个值