PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 43


Следующая строка увеличивает значение %count, при этом в качестве ключа используется значение $shell, а если оно ложно — строка "/bin/sh".

$count{  $shell   ||   "/bin/sh'   }++,

В одном условии можно объединить несколько альтернативных вариантов, как показывает следующий пример. Результат совпадает с первым операндом, имею­щим истинное значение.

й Определить имя  пользователя в системе UNIX $user = $ENV{USER}


1.3. Перестановка значений без использования временных переменных   33

|| $ENV{LOGNAME}

11 getloginO

|| (getwuid($<))[0]

|| "Unknown uid number $<";

Оператор && работает аналогично; он возвращает первый операнд, если этот операнд ложен. В противном случае возвращается второй операнд. Поскольку ложные значения представляют интерес существенно реже, чем истинные, это свойство используется не так часто. Одно из возможных применений продемон­стрировано в рецепте 8.13.

Оператор присваивания 11 = выглядит странно, но работает точно так же, как и остальные операторы присваивания. Практически для всех бинарных операто­ров Perl $VAR 0P= VALUE означает $VAR = $VAR OP VALUE; например, $а += $b —тоже, что и $а = $a + $b. Следовательно, оператор | |= может использоваться для при­сваивания альтернативного значения переменной. Поскольку 11 выполняет про­стую логическую проверку (истина или ложь), у него не бывает проблем с неопре­деленными значениями, даже при использовании ключа -w.

В следующем примере | |= присваивает переменной $starting_pomt значение "Greenwich", если оно не было задано ранее. Предполагается, что $starting_point не принимает значений 0 или "О", а если принимает — то такие значения долж­ны быть заменены:

$startmg_point   ||=   'Greenwich'

В операторах присваивания 11 нельзя заменять оператором о г, поскольку о г имеет слишком низкий приоритет. Выражение $а = $b or $с эквивалентно ($а = $b) or $c. В этом случае переменной $Ь всегда присваивается $а, а это совсем не то, чего вы добивались.




Начало  Назад  Вперед



Книжный магазин