Forum Webscript.Ru

Программирование => Perl => Тема начата: Phoinix от 08 Января 2004, 10:06:43

Название: Проверка checkbox
Отправлено: 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;
Название: Проверка checkbox
Отправлено: ondr от 08 Января 2004, 10:56:32
$var = (defined $var && $var eq \'on\') ? \'yes\' : \'no\';
Название: Проверка checkbox
Отправлено: Phoinix от 08 Января 2004, 11:06:19
ondr
Спасибо!

[OFF] но правильней все же будет:

$var = (defined $var && $var ne \'on\') ? \'no\' : \'yes\';[/OFF]

P.S. Решение не правильное!
Название: Проверка checkbox
Отправлено: ondr от 08 Января 2004, 11:14:18
незнаю незнаю
с модулем CGI не общаюсь, но сильно сомневаюсь, что он всегда возвращает определенное значение ;) У тебя в логике возможно ошибка.
Название: Проверка checkbox
Отправлено: Phoinix от 08 Января 2004, 11:23:30
ondr
Ага стормозил...

Я почему то решил, что defined возвращает TRUE если переменная не определена...
Название: Проверка checkbox
Отправлено: Phoinix от 08 Января 2004, 18:33:19
Еще вопрос в догонку:

$var = (defined $var && $var eq \'on\') ? \'yes\' : \'no\';

идентично ли:

$var = ($var && $var eq \'on\') ? \'yes\' : \'no\';

?
Название: Проверка checkbox
Отправлено: ondr от 09 Января 2004, 09:57:49
Вобще нет, но в твоем случае сгодится.
Во втором случае ты проверяешь истину (определенно и значение не \'0\')
Название: Проверка checkbox
Отправлено: Phoinix от 09 Января 2004, 10:18:58
ondr
А мне собственно это и нужно, иначе он в логи пишет предупреждения.