Forum Webscript.Ru
Программирование => Perl => Тема начата: Phoinix от 08 Января 2004, 10:06:43
-
Получаю из формы переменную var (checkbox), но меня смущает одно - я проверяю эту переменную нижеуказанной конструкцией, нельзя ли проверить её немного проще?
#!/usr/bin/perl -w
use CGI;
use strict;
my $query = new CGI;
my $var = $query -> param(\'var\');
if (!$var) {$var = \'no\'}
elsif ($var eq \'on\') {$var = \'yes\'}
else {$var = \'no\'}
print "Content-type: text/html; charset=windows-1251\\n\\n";
print qq "$var";
exit;
-
$var = (defined $var && $var eq \'on\') ? \'yes\' : \'no\';
-
ondr
Спасибо!
[OFF] но правильней все же будет:
$var = (defined $var && $var ne \'on\') ? \'no\' : \'yes\';[/OFF]
P.S. Решение не правильное!
-
незнаю незнаю
с модулем CGI не общаюсь, но сильно сомневаюсь, что он всегда возвращает определенное значение ;) У тебя в логике возможно ошибка.
-
ondr
Ага стормозил...
Я почему то решил, что defined возвращает TRUE если переменная не определена...
-
Еще вопрос в догонку:
$var = (defined $var && $var eq \'on\') ? \'yes\' : \'no\';
идентично ли:
$var = ($var && $var eq \'on\') ? \'yes\' : \'no\';
?
-
Вобще нет, но в твоем случае сгодится.
Во втором случае ты проверяешь истину (определенно и значение не \'0\')
-
ondr
А мне собственно это и нужно, иначе он в логи пишет предупреждения.