The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как проверить на defined сразу несколько переменных?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Как проверить на defined сразу несколько переменных?"  
Сообщение от rookie email on 12-Авг-08, 16:32 
if (!defined $a || !defined $b || .. ) выглядит очень неуклюже. Можно как-нибудь if undefined ($a $b $c $d) { ... } ?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как проверить на defined сразу несколько переменных?"  
Сообщение от arturpub (ok) on 12-Авг-08, 20:04 
foreach ($a, $b, ...) { do {
    ...
} and last if not defined $_ }

sub undefined { foreach (@_) { return 1 if not defined $_ }; 0 }

можно покумекать через grep/map


да, еще в List::Util есть несколько примеров

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Как проверить на defined сразу несколько переменных?"  
Сообщение от qq (ok) on 12-Авг-08, 21:40 
>if (!defined $a || !defined $b || .. ) выглядит очень неуклюже.
>Можно как-нибудь if undefined ($a $b $c $d) { ... }
>?

модуль List::MoreUtils

               print "At least one value undefined"
                   if any { !defined($_) } @list;

               print "All items defined"
                   if all { defined($_) } @list;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как проверить на defined сразу несколько переменных?"  
Сообщение от angra (ok) on 13-Авг-08, 06:41 
Используйте обычный grep, например (!defined $a || !defined $b || .. ) заменяется на grep !defined, ($a,$b,$c).
Пример:

$ perl -le 'my ($a,$b,$c)=(0,1,2);print((grep !defined, ($a,$b,$c))?"Bad":"Good");'
Good
perl -le 'my ($a,$b,$c)=(0,1);print((grep !defined, ($a,$b,$c))?"Bad":"Good");'
Bad

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как проверить на defined сразу несколько переменных?"  
Сообщение от rookie email on 13-Авг-08, 09:16 
>Используйте обычный grep, например (!defined $a || !defined $b || .. )
>заменяется на grep !defined, ($a,$b,$c).
>Пример:
>
>$ perl -le 'my ($a,$b,$c)=(0,1,2);print((grep !defined, ($a,$b,$c))?"Bad":"Good");'
>Good
>perl -le 'my ($a,$b,$c)=(0,1);print((grep !defined, ($a,$b,$c))?"Bad":"Good");'
>Bad

Спасибо, это то, что надо.
Спасибо всем

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Как проверить на defined сразу несколько переменных?"  
Сообщение от rookie email on 13-Авг-08, 09:42 
>Используйте обычный grep

Ещё одина близкая тема.
Как разрушить одним undef сразу несколько переменных?
Код undef ($a, $b, $c) не работает как хотелось :-(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Как проверить на defined сразу несколько переменных?"  
Сообщение от angra (ok) on 13-Авг-08, 23:43 
perldoc -f map :)
Функции map и grep применяются очень часто, так что стоит их освоить.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру