Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在散列中查找值?_String_Perl_Hash_Key - Fatal编程技术网

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
或更复杂的操作,我们无法保证您的操作是否正确。