Операции присваивания
Для всех бинарных операций языка Perl существуют соответствующие составные операции присваивания. Все они, вместе с примерами их использования, собраны в табл. 4.2.
Таблица 4.2. Составные операции присваивания.
| Операция | Пример | Эквивалент с операцией простого присваивания |
|---|---|---|
| **= | $а **= 3; | $а = $а ** 3; |
| += | $а += 3; | $а = $а + 3; |
| - = | $а -= 3; | $а = $а -3; |
| .= | $а.= "а"; | $а = $а. "а"; |
| *= | $а *= 3; | $а = $а * 3; |
| /= | $а /= 3; | $а = $а / 3; |
| %= | $а %= 3; | $а = $а % 3; |
| х= | $а х= 3; | $а = $а х 3; |
| &= | $а &= $b; | $а = $а & $b; |
| |= | $а |= 3; | $а = $а | 3; |
| ^= | $а ^= 3; | $а = $а ^ 3; |
| <<= | $а <<= 3; | $а = $а " 3; |
| >> = | $а >>= 3; | $а = $а " 3; |
| &&= | ||
| ||= | $а ||= $b == 0; | $а = $а || $b == 0; |
Возвращаемым значением каждой из составных операций присваивания, как и в случае простого присваивания, является переменная левого Операнда (правильное lvalue), поэтому их можно использовать в любом операнде других операций присваивания (пример 4.11).
| $b = 1; | |
| $а = ($Ь +=3); | # Результат: $а = $b = 4 |
| $а += ($Ь += 3); | # Результат: $а = $а+$b+3 |
| (($а += 2) **= 2) -= 1; | # Результат: $а = ($а+2)**2-1 |
Замечание
При использовании операции присваивания (простой или составной) в качестве левого операнда другой операции присваивания обязательно ее заключение в круглые скобки. Иначе может сгенерироваться синтаксическая ошибка, или выражение будет интерпретировано не так, как задумывалось. При наличии нескольких операций присваивания в одном выражении без скобок интерпретатор perl начинает его разбор справа. Например, если последнее выражение примера 4.11 записать без скобок.
$а += 2 **= 2 -= 1;
…то при его синтаксическом анализе интерпретатор сначала выделит операцию присваивания:
2 -= 1;
…и сообщит об ошибке, так как ее синтаксис ошибочен (левый операнд не является переменной или элементом массива).
