perl - 哈希上的“使用未初始化值”消息,但我认为密钥存在
问题描述
我在调试时遇到了一些奇怪的事情。顺便说一句warn
。print
foreach my $key (keys %{$changeIdsRelevant})
{
warn($key); # Icf4e037 is printed once
}
warn((keys %{$changeIdsRelevant})[0]); # Icf4e037 is printed
我想知道密钥Icf4e037
持有什么值,所以在第一个块之后打印了以下内容。如您所见,我不确定语法并打印了很多..
warn($changeIdsRelevant->{'Icf4e037'});
warn($changeIdsRelevant->{Icf4e037});
warn($changeIdsRelevant{Icf4e037}); # this one 'gave requires explicit package name' error
前 2 个,他们返回的不是一个值
Use of uninitialized value in warn at <file_path>
Warning: something's wrong at <file_path>
这个if
块也没有被执行
if (defined $changeIdsRelevant->{'Icf4e037'}) {
warn('============================================================');
};
是否说密钥Icf4e037
存在但其值未定义?但我觉得世界上每把钥匙都可以这么说。有谁知道为什么它仍然返回Icf4e037
keys <hash>
?
解决方案
推荐阅读
- java - 如何从 \n \t 等中清理字符串?
- regex - 正则表达式测试字符串是否同时包含大写和小写字母
- spring-data-jpa - JPA Pageable 似乎在访问列表中的多个结果后获取所有行
- c# - EF Core - ContainsAsync 验证失败。重复的寄存器
- websphere - 仅在 Websphere 上排除来自特定 IP 的 404 错误
- properties - reified rdf 三元组中的 SPARQL 属性路径
- php - 按发布的自定义帖子数量顺序获取 wordpress 作者
- r - 用于分隔 R 中两个人之间的聊天的正则表达式
- vba - VBA Word“for each”循环在查看修订集合时无限循环
- aws-lambda - 如何在 AWS Cognito 的 Migrate User Lambda 触发器中操作电子邮件地址