Иллюстрированный самоучитель по Perl

Операции присваивания

Для всех бинарных операций языка 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;

…и сообщит об ошибке, так как ее синтаксис ошибочен (левый операнд не является переменной или элементом массива).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.