String 如何在散列中查找值?
我有一个像这样的杂烩String 如何在散列中查找值?,string,perl,hash,key,String,Perl,Hash,Key,我有一个像这样的杂烩 %has = ('TCA' =>'S', 'TTC'=>'N'....) 和 $string = 'TCA' 我想在%has中查找我的$string,如果它存在,请使用perl打印值,如下所示: TCA, S 我该怎么做?非常感谢你 检查该值是否存在 if (exists $has{$string}) { printf "%s, %s\n", $string, $has{$string}; } 请记住,这是区分大小写的 您可能应该阅读中的各
%has = ('TCA' =>'S', 'TTC'=>'N'....)
和
$string = 'TCA'
我想在%has
中查找我的$string
,如果它存在,请使用perl打印值,如下所示:
TCA, S
我该怎么做?非常感谢你 检查该值是否存在
if (exists $has{$string}) {
printf "%s, %s\n", $string, $has{$string};
}
请记住,这是区分大小写的
您可能应该阅读中的各种Perl函数,注意,
存在
这里不是严格要求的;如果访问不存在的散列元素,Perl将返回undef
…但也会将该键添加到散列中。如果希望访问散列元素时不更改键,请使用exists
;如果您没有,只需访问即可。@JoeMcMahon这是不正确的。你想到的是自生,只有当你提到多维结构时才会发生。例如,如果您尝试访问$has{foo}{bar}
,如果它不存在,它将创建$has{foo}
。非常感谢。尽管注释re存在
仍然正确。@JoeMcMahon很好,不完全正确$has{$string}
仍然可以定义,但为false,例如0
或空字符串exists
是执行的最安全的检查,也可以使用defined
。True。我正处在一个迷宫里,迷宫里充满了各种各样的小例外。对于OP的示例,对于只有字符串值的值,“is the key present”检查可以工作,但是正如您所说的,总是有一些东西没有正确初始化,并且exists()
明确地告诉您那里有一个键值对。当然,如果不进行tie
或更复杂的操作,我们无法保证您的操作是否正确。