我试图检查是否存在哈希键,例如:
use warnings;
use strict;
use feature qw(say);
use Data::Dump qw(dump);
my $h={a=>1,b=>2};
dump($h);
if (exists $h->{a}{b}) {
say "Key exists.";
}
dump($h);
Run Code Online (Sandbox Code Playgroud)
这给出了:
{ a => 1, b => 2 }
Can't use string ("1") as a HASH ref while "strict refs" in use at ./p.pl line 12.
Run Code Online (Sandbox Code Playgroud)
这个错误消息的原因是什么?
$h->{a}{b}暗示值为$h->{a}hashref,并且您想要检查它的密钥b是否存在.
由于$h->{a}是简单的标量(1),它不能用作hashref(use strict防止它),因此不能用作消息Can't use string (“1”) as a HASH ref