Как проверить значение, возвращаемое из доступа к хеш-таблице - PullRequest
0 голосов
/ 16 октября 2019

Я перебираю хеш-таблицу и извлекаю значение, используя ключ в качестве доступа. Я хочу проверить доступное значение, чтобы увидеть, соответствует ли оно определенной строке, однако я не получаю никакого оператора печати в условии 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". Однако кажется, что условие if как-то не работает?

Я ожидал, что на выходе будет напечатано НАЙТИ поле ЗАДЕРЖКИ

1 Ответ

4 голосов
/ 16 октября 2019

$type eq "DELAY" проверка значения $type - это строка, идентичная DELAY (или что-то, что переводит в строку с такой строкой).

$type =~ "DELAY" (странный способзапись $type =~ /DELAY/) проверяет, соответствует ли значение $type шаблону регулярных выражений DELAY. If будет соответствовать, если значением является строка, которая содержит DELAY (или что-то, что переводит в строку с такой строкой).

Так как $type =~ "DELAY" является истинным, а $type eq "DELAY" ложным,у вас есть строка, которая не DELAY, но содержит DELAY. Может быть, у вас есть трейлинг строки? chomp строк, которые вы читаете из файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...