Я пытаюсь сравнить две переменные, в которых обычно находятся строки. Эти переменные генерируются из базы данных, $var1
от одного db и $var2
от другого. Когда я сравниваю их в цикле, я использую оператор ne
. Однако бывают случаи, когда I эти переменные являются null
или undef
. Сравнение производится следующим образом:Сравните две (потенциально) переменные undef в perl
foreach my $var1 (@$varlist)
{
if ($var1 ne $var2)
{
print "vars are not equal";
}
}
Проблема в том, что если $var1
или $var2
являются undef
тогда я получаю сообщение об ошибке. Тем не менее, мне нужно иметь возможность сравнивать тогда значения как undef b/c, мне придется их написать. Я рассматривал преобразование переменных в строку «NULL», а затем назад, но это казалось неэффективным.
Любой способ исправить это? Спасибо!
Почему бы не напечатать выражение, если только '$ var1' не определен? – Prateek
Это было больше основанием для моего ответа, поэтому я выбрал его. Окончательный ответ выглядел так: 'if ((определено! $ Var1 &&! Defined $ var2) && (определено $ var1 && определено $ var2 && $ var1 eq $ var2))' – Prateek
Более короткая версия с использованием xor: 'if ((определено $ var1 xor определено $ var2) или $ var1 ne $ var2) ' –