if (!defined $a || !defined $b || .. ) выглядит очень неуклюже. Можно как-нибудь if undefined ($a $b $c $d) { ... } ?
foreach ($a, $b, ...) { do {
...
} and last if not defined $_ }sub undefined { foreach (@_) { return 1 if not defined $_ }; 0 }
можно покумекать через grep/map
да, еще в List::Util есть несколько примеров
>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;
Используйте обычный 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
>Используйте обычный 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Спасибо, это то, что надо.
Спасибо всем
>Используйте обычный grepЕщё одина близкая тема.
Как разрушить одним undef сразу несколько переменных?
Код undef ($a, $b, $c) не работает как хотелось :-(
perldoc -f map :)
Функции map и grep применяются очень часто, так что стоит их освоить.