Что состоит в том, чтобы проверить надлежащий путь, пуста ли строка в Perl?

Я просто использовал этот код, чтобы проверить, пуста ли строка:

if ($str == "")
{
  // ...
}

И также то же с не равняется оператору...

if ($str != "")
{
  // ...
}

Это, кажется, работает (я думаю), но я не уверен, что это - корректный путь, или если существуют какие-либо непредвиденные недостатки. Что-то просто не чувствует себя хорошо об этом.

88
задан Nick Bolton 11 January 2010 в 23:38
поделиться

5 ответов

Для сравнения строк в Perl, используйте EQ или Ne :

if ($str eq "")
{
  // ...
}

== и ! = Операторы числовые операторы сравнения. Они попытаются преобразовать обе операнды целых числам, прежде чем сравнивать их.

См. Perlop Perlop на странице человека для получения дополнительной информации.

124
ответ дан 24 November 2019 в 07:27
поделиться
  1. Из-за того, как строки хранятся в Perl, оптимизирована длина строки.
    Если (длина $ STR) - хороший способ проверки того, что строка не пустая.

  2. Если вы находитесь в ситуации, когда вы еще не охраняли Undef , то уловий - все для «не пустых», которые не предупреждают, является , если (определено $ ул и длина $ str) .

88
ответ дан 24 November 2019 в 07:27
поделиться

Как уже упоминалось несколькими людьми EQ , является правильным оператором здесь.

Если вы используете предупреждения; в вашем скрипте вы получите предупреждения об этом (и много других полезных людей); Я бы порекомендовал использование строгого; также.

9
ответ дан 24 November 2019 в 07:27
поделиться

Вы, вероятно, хотите использовать «EQ» вместо «==». Если вы беспокоитесь о некоторых краевых случаях, вы также можете проверить для определения undefined:

if (not defined $str) {

# this variable is undefined

}
9
ответ дан 24 November 2019 в 07:27
поделиться

Сама концепция «правильного» способа сделать что-либо, кроме использования CPAN, не существует в Perl.

В любом случае, это числовые операторы, вы должны использовать

if($foo eq "")

или

if(length($foo) == 0)
4
ответ дан 24 November 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: