我正在迭代哈希表,并使用密钥作为访问来检索值。我想测试访问的值以查看它是否匹配特定的字符串,但是在测试该值是否为特定字符串的if条件下,我没有得到任何打印语句。
假设我有一个名为margin_hash的哈希表,其中包含密钥 和值对,其中键是边距名称,值是 一个字符串。
foreach my $margin_name (keys %margin_hash) {
my $type = $margin_hash{$margin_name}{"MARGIN TYPE"};
if ( $type eq "DELAY") {
print "FOUND a DELAY margin\n";
}
}
我知道我的哈希表包含一个值“ DELAY”。但是似乎 如果条件以某种方式不起作用?
我希望输出打印出DELAY边距
答案 0 :(得分:4)
$type eq "DELAY"
检查$type
的值是一个与DELAY
相同的字符串(或字符串化为这样的字符串)。
$type =~ "DELAY"
(一种奇怪的编写方式$type =~ /DELAY/
)检查$type
的值是否与正则表达式模式DELAY
相匹配。如果该值是包含 DELAY
的字符串(或字符串化为这样的字符串的字符串),则if将匹配。
由于$type =~ "DELAY"
为true并且$type eq "DELAY"
为false,因此您的字符串不是DELAY
,而是包含DELAY
。也许您有尾随换行?您从文件中读取的chomp
行。