Perl метод терпит неудачу, когда я использую переменную, а не строковый литерал - PullRequest
0 голосов
/ 04 октября 2011

Получение некоторого странного поведения в скрипте Perl, которое я не совсем понимаю. Я пытаюсь превратить некоторые из моих магических строковых литералов в переменные, которые легче изменить.

У меня есть аргумент в моей подпроцедуре, который называется $in_feature. Прямо сейчас это значение просто "in_feature". Я могу распечатать его, и он выглядит хорошо. Пока все хорошо ...

Этот код не работает, хотя:

if ($in_feature != "" && !$blockModel->is_field($in_feature))
{
    print "ERROR: was expecting to find a variable in the block model called $in_feature.\n";
        return;
}

Если я удаляю сравнение строк и изменяю вызов метода на строковый литерал, он работает как положено.

if (!$blockModel->is_field("in_feature"))
{
    print "ERROR: was expecting to find a variable in the block model called $in_feature.\n";
        return;
}

Таким образом, переменная является строкой, равной пустой строке и не может использоваться вместо строки?!? Почему это?

1 Ответ

8 голосов
/ 04 октября 2011

Сравнение строк в Perl использует ne и eq вместо! = И ==

Замените $in_feature != "" на $in_feature ne "", и это может решить ваши проблемы.

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