Пора разобраться, что же можно делать с переменными. А то работаем с ними работаем, а как не знаем... Я думаю вы и без меня знаете такие элементарные вещи, но по закону жанра описать это обязан.
С переменными можно производить арифметические операции, операции сравнения, и операции булевой алгебры. С арифметикой всё очень просто:
+ - сложение.
- - вычитание.
* - умножение.
/ - деление.
% - взятие остатка от деления.
** - возведение в степень.
. - конкатенация (объединение строк).
= - приравнивание.
+= - сложение с приравниванием. $x=$x+$y эквивалентно $x+=$y.
-= - вычитание с приравниванием. $x=$x-$y эквивалентно $x-=$y.
*= - умножение с приравниванием. $x=$x*$y эквивалентно $x*=$y.
/= - деление с приравниванием. $x=$x/$y эквивалентно $x/=$y.
%= - взятие остатка от деления с приравниванием. $x=$x%$y эквивалентно $x%=$y.
.= - конкатенация с приравниванием. $x=$x.$y эквивалентно $x.=$y.
++ - инкремент (увеличение на еденицу). $x++ эквивалентно $x=$x+1.
-- - декремент (уменьшение на еденицу). $x-- эквивалентно $x=$x-1.
Вот и всё. Единственный интересный момент это последние две операции. Они имеют две формы записи - префиксную и постфиксную. Попробуйте выполнить следующую операцию print $x++, если $x равен пяти, то 5 выведено и будет. А теперь попробуйте так print ++$x, будет выведено 6.
Теперь о сравнении:
== - равно?
!= - не равно?
> - больше?
< - меньше?
>= - больше или равно?
<= - меньше или равно?
Сравнение строк происходит маленько по другому:
eq - равно?
ne - не равно?
gt - больше?
lt - меньше?
ge - больше или равно?
le - меньше или равно?
На все эти вопросы существуют только два ответа - истина или ложь.
Булевая алгебра:
& - логическое И.
| - логическое ИЛИ.
^ - исключающее ИЛИ.
! - логическое отрицание.
>> - побитный сдвиг вправо. $x>>4 - сдвигает побитно вправо значение в левой части ($x) на кол-во бит указаное в правой (4 бита в данном случае).
<< - побитный сдвиг влево. $x<<4 - сдвигает побитно влево значение в левой части ($x) на кол-во бит указаное в правой (4 бита в данном случае).
Операции будевой алгебры обычно (в основном &, |, !) применяются в операторах ветвления.
Например:
# если $x ложно, выполнять if(!$x) { ... } # если $x меньше десяти И больше пяти, выполнять. if(($x<10) & ($x>5)) { ... } # если $x равен 10 ИЛИ равен пяти, выполнять. if(($x==10) | ($x==5)) { ... }
Операторы & и | имееют ещё две формы записи. Символьная: & - and, | - or. И ещё одна логическая, применяемая чаще за счёт своей удобности. && - работает так, что если при вычислении стоящее слева выражение возвращает false, то правое уже не вычисляется. || - аналогичен.
Более подробно это рассказывать не буду... Когда понадобится буду объяснять в процессе. Есть ещё два замечательных оператора - =~ и .., но их мы разберём позже.