Я просто использовал этот код, чтобы проверить, пуста ли строка:
if ($str == "")
{
// ...
}
И также то же с не равняется оператору...
if ($str != "")
{
// ...
}
Это, кажется, работает (я думаю), но я не уверен, что это - корректный путь, или если существуют какие-либо непредвиденные недостатки. Что-то просто не чувствует себя хорошо об этом.
Для сравнения строк в Perl, используйте EQ
или Ne
:
if ($str eq "")
{
// ...
}
==
и ! =
Операторы числовые операторы сравнения. Они попытаются преобразовать обе операнды целых числам, прежде чем сравнивать их.
См. Perlop Perlop на странице человека для получения дополнительной информации.
Из-за того, как строки хранятся в Perl, оптимизирована длина строки.
Если (длина $ STR)
- хороший способ проверки того, что строка не пустая.
Если вы находитесь в ситуации, когда вы еще не охраняли Undef
, то уловий - все для «не пустых», которые не предупреждают, является , если (определено $ ул и длина $ str)
.
Как уже упоминалось несколькими людьми EQ
, является правильным оператором здесь.
Если вы используете предупреждения;
в вашем скрипте вы получите предупреждения об этом (и много других полезных людей); Я бы порекомендовал использование строгого;
также.
Вы, вероятно, хотите использовать «EQ» вместо «==». Если вы беспокоитесь о некоторых краевых случаях, вы также можете проверить для определения undefined:
if (not defined $str) {
# this variable is undefined
}
Сама концепция «правильного» способа сделать что-либо, кроме использования CPAN, не существует в Perl.
В любом случае, это числовые операторы, вы должны использовать
if($foo eq "")
или
if(length($foo) == 0)