Каждый символ остается в своем классе (большие, малые, цифры) и учитывается перенос предыдущего символа. Таким образом строковые переменные с цифрами работают как числовые переменные.
Пример:
print ++($i = «09»); # Результат «10»
print ++($i = «a9»); # «b0»
print ++($i = «az»); # «ba»
print ++($i = «aZ»); # «bA»
Пример:
print 4**2 # Результат 16
print -4**2 # Результат -16 т.е. -(4**2)
'!
' – логическое отрицание'-
' – арифметический минус'~
' – побитная инверсия (дополнение до 1)'+
' – арифметический плюс'\
' – получение ссылки на переменную (как & в С)Эти «необычные» я бы даже сказал оригинальные операторы имеют очень широкое применение в Перл. Можно даже назвать их «оригинальным» решением.
Оператор =~
логически связывает левую часть выражения с патерном (pattern – образец, шаблон, модель) в правой. По умолчанию поиск или изменение по патерну выполняется в переменной $_ Операторы привязки позволяют делать это с любой переменной указанной в левой части. Логическим результатом будет успех операции. Если в правой части вместо патерна присутсвует выражение, то результат этого выражения воспринимается как патерн. Однако это не очень эффективно т.к. патерн будет компилироваться во время исполнения программы что заметно снизит быстродействие.Оператор !~
аналогичен =~ только результат совпадения инвентируется (логическое «нет»). Подробное применение этих операторов приводится в главе «Патерны».'*
' – арифметическое умножение'/
' – арифметическое деление'%
' – арифметический модуль'x
' – оператор повторенияВ скалярном контексте возвращает строку левой части повторенную величиной указанной в правой части. В списковом контексте, если в левой части список в круглых скобках – повторенный список.
Пример:
print '*' x 5; # Результат '*****'
print (1,2) x 3; # Результат 121212
'+
' – арифметический плюс'-
' – арифметический минус'.
' – конкатенация (объединение) строк'<<
' – Сдвигает побитно влево значение выражения в левой части на количество бит указанное в правой.'>>
' – Сдвигает побитно вправо значение выражения в левой части на количество бит указанное в правой.Фактически это функции с одним аргументом. Круглые скобки можно опускать.
Операторы отношений.
'<
' – арифметическое меньше'>' – арифметическое больше
'<=
' – арифметическое меньше или равно'>=
' – арифметическое больше или равно'lt
' – строковое меньше'gt
' – строковое больше'le
' – строковое меньше или равно'ge
' – строковое больше или равно'==
' результат'!=
' – не равно'<=>
' – -1 если левая часть меньше правой, 0 если равна, 1 если больше.'eq
' – строковое равно'ne
' – строковое не равно'cmp
' – как и '<=>' применительно к строкам'&
' – побитное AND'|
' – побитное OR'^
' – побитное XOR'&&
' – если левое выражение возвращает'||
' – если левое выражение возвращаетОтличие от подобных операторов в С заключается в том, что в С возращаемое значение либо 0 либо 1. Тогда как в Перл возвращается результат выражения.
Результат работы данного оператора зависит от контекста. В списковом контексте результат есть список с элементами. Первый элемент которого это левое выражение и последнее – правое.
Значение каждого элемента внутри списка увеличивается на 1.
Данный оператор удобен для небольших циклов т.к. память отводится для всего списка целиком. Поэтому будьте внимательны и не задавайте слишком большой диаппазон.
Пример:
for $i (1..4)
{ print "$i ";
}
Результат: 1 2 3 4
В скалярном контексте результат – логическое значение. Каждая '..
' операция устанавливает свое собственное состояние. ЭтоПравый операнд не вычисляется пока результат
Последний порядковый номер добавляется строкой "E0
" которая не изменяет его значение но позволяет фиксировать последнее значение.Пример: