Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > "Useless use of length in void context"


Автор: ochnev 11.4.2009, 02:36
При проверке синтаксиса скрипта получил предупреждение:

# perl -c view_ad.fcgi
[Sat Apr 11 01:59:19 2009] view_ad.fcgi: Useless use of length in void context at view_ad.fcgi line 193.
view_ad.fcgi syntax OK

Фрагмент кода:
Код

         my $small_ad = undef;
         my $big_ad = undef;
         my $ad_text_length = length($ad_text);
         if($ad_text_length => 185 && $ad_text_length < 285) {
             $small_ad = 1;
         }
         if($ad_text_length >= 285) {
             $big_ad = 1;
         }


Выделенная строка 193, на которую ругается компилятор.
Скрипт-то работает, но хотелось бы изменить конструкцию, чтобы в логах потом не было этих варнингов.

Заменил на конструкцию elsif. Тот же самый результат, с той разницей, что на другую строку указывает, вообще за пределами фрагмента этоо кода. Ничего не понимаю.
Что происходит, подскажите, сталкивался?

Автор: tolkien 11.4.2009, 03:18
У вас здесь
Код

  my $ad_text_length = length($ad_text);

переменная $ad_text имеет значение undef

Автор: ochnev 11.4.2009, 03:40
Цитата(tolkien @ 11.4.2009,  03:18)
У вас здесь
Код

  my $ad_text_length = length($ad_text);

переменная $ad_text имеет значение undef

Судя по поведению скрипта на сайте, переменная $ad_text имеет ожидаемое значение, отличное от undef.

Автор: amg 11.4.2009, 05:58
У Вас там в одном месте явная опечатка:
вместо
$ad_text_length => 185
надо
$ad_text_length >= 185

Даже если и не в ней дело, все равно лучше исправить smile 

Вообще странно, что ругань на length. По идее, ругаться нужно бы было на использование переменной in void context и на ту строку, где вышеупомянутая опечатка.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)