Язык программирования Perl | страница 19
Конечно же, в Perl, как и в других языках программирования, есть традиционные арифметические операции:
>
* умножение (например, 2 * 2 будет 4)
/ деление (например, 11 / 2 будет 5.5)
+ сложение (например, 111 + "999" будет 1110)
- вычитание (например, '26' - 1 будет 25)
Обратите внимание на особенность арифметических операций в Perl - в них могут участвовать и строки. При этом, попадая в числовой контекст, строковое представление числа автоматически преобразуется к соответствующему числовому значению. Это очень удобно, но нужно быть внимательным при преобразовании к числам строк, содержащих не-цифровые символы. Символ, не применяемый для записи десятичного числа, прерывает преобразование строки в число, например:
>
' +.25x7' + 1 будет 1.25 (то есть ' +0.25' + 1 или 0.25 + 1)
'x.25+7' + 1 будет 1 (то есть '' + 1 или 0 + 1)
'10_000' + 1 будет 11 (то есть '10' + 1 или 10 + 1)
В Perl есть еще две очень удобные арифметические операции, которые имеются не во всех языках программирования:
>
** возведение в степень (например, 2 ** 5 будет 32)
% деление по модулю или остаток от деления (например, 11 % 3 будет 2)
Из языка программирования C заимствованы операции увеличения и уменьшения на единицу, или автоинкремента и автодекремента соответственно. В отличие от перечисленных выше бинарных операций, имеющих два операнда, это унарные операции с одним операндом, применяемые к переменным. Эти операции изменяют значение своего операнда, чем отличаются от большинства других операций, не изменяющих значения операндов. Они могут записываться как в префиксной форме, когда знак операции стоит перед именем переменной, так и в постфиксной форме (также называемой суффиксной), когда знак операции стоит после переменной:
>
++ автоинкремент или увеличение на 1 (например, $n++ или ++$n)
-- автодекремент или уменьшение на 1 (например, $n-- или --$n)
В префиксной форме значением выражения будет значение операнда после изменения, а в постфиксной - значение операнда до изменения. Особенности применения префиксной и постфиксной форм можно показать на таком простом примере:
>
$n = 25; # начальное значение переменной $n
$x1 = $n++; # в $x1 сохранено 25, затем в $n стало 26
$x2 = ++$n; # в $n стало 27 и оно сохранено в $x2
$x3 = --$n; # в $n стало 26 и оно сохранено в $x3
$x4 = $n--; # в $x4 сохранено 26, затем в $n стало 25
--$n; # и наконец $n уменьшилось до 24
Хотя выражение с операцией автоинкремента или автодекремента возвращает значение, часто оно отбрасывается, а сама операция применяется только для изменения значения переменной, что является побочным эффектом ее выполнения. Например: