我正在迭代一个哈希表,我使用键作为访问权限来检索值。我想测试访问的值以查看它是否与特定字符串匹配,但是我在 if 条件中没有得到任何 print 语句来测试该值是否为特定字符串。
假设我有一个名为 margin_hash 的哈希表,其中包含 Key 和值对,其中键是保证金名称,值是 一个字符串。
foreach my $margin_name (keys %margin_hash) {
my $type = $margin_hash{$margin_name}{"MARGIN TYPE"};
if ( $type eq "DELAY") {
print "FOUND a DELAY marginn";
}
}
我知道我的哈希表包含一个值"延迟"。然而似乎 如果条件不知何故不起作用?
我期望输出打印找到延迟边距
$type eq "DELAY"
检查$type
的值是否与DELAY
,(或字符串化为此类字符串的东西(的值。
$type =~ "DELAY"
(一种奇怪的$type =~ /DELAY/
编写方式(检查$type
的值是否与正则表达式模式DELAY
匹配。如果值是包含DELAY
的字符串(或字符串化为此类字符串的内容(,则 if 将匹配。
由于$type =~ "DELAY"
为真,$type eq "DELAY"
为假,因此您有一个不是DELAY
的字符串,但包含DELAY
。也许您有一个尾随换行符? 从文件中读取chomp
行。