如何测试哈希表访问返回的值

时间:2019-10-16 16:33:38

标签: perl

我正在迭代哈希表,并使用密钥作为访问来检索值。我想测试访问的值以查看它是否匹配特定的字符串,但是在测试该值是否为特定字符串的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边距

1 个答案:

答案 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行。

相关问题