Язык программирования 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


Хотя выражение с операцией автоинкремента или автодекремента возвращает значение, часто оно отбрасывается, а сама операция применяется только для изменения значения переменной, что является побочным эффектом ее выполнения. Например: