После того как вы познакомились со скалярными типами данных, можно попробовать сделать что-то полезное на Perl. Программа Perl — набор выражений и операторов, выполняемых последовательно от начала и до конца, если, конечно, вы не изменяете ход программы с помощью специальных операторов, описанных на 3-м занятии, «Управление процессом выполнения программы». Пример готовой программы на Perl приведен в листинге 2.1.
Проведем анализ программы.
- Строка 1. Как вы помните, в этой строке указывается путь к интерпретатору Perl. Ключ -w говорит о том, что нужно выводить все предупреждения.
- Строка 3. В этой строке выполняется оператор присваивания. Скалярной переменной $radius присваивается число 50.
- Строка 5. В этой строке также выполняется оператор присваивания. В правой части оператора присваивания находится выражение. Выражение содержит скалярную переменную $radius, операторы * и ** (ниже описано их действие) и числовой скаляр 2. Переменной $агеа присваивается вычисленное значение выражения.
- Строка 6. В этой строке распечатывается результат вычислений, находящийся в переменной $агеа.
Выражение — это набор операторов, имеющих значение. Например, 2 — допустимое выражение, как и 54*$r, «Java», sin($pi*8) и $t=6. Значения выражений вычисляются в ходе выполнения программы. Вначале программа вычисляет значения функций, операторов и скалярных констант, составляющих выражение, а затем — результирующее значение. Выражения можно использовать в операторах присваивания, в других выражениях или в операторах Perl.
Основные операторы
Как было показано в листинге 2.1, для присваивания используется оператор присваивания =. Этот оператор помещает значение выражения, находящегося в правой части, в переменную, указанную в левой части. Например:
$title= «Унесенные ветром»;
$pi=3.14159;
Оператор, находящийся в правой части, должен иметь определенное значение, которое можно присвоить переменной, т.е. правая часть оператора присваивания должна являться выражением. Сама по себе операция присваивания также является выражением, значение которого указывается в правой части оператора присваивания. Это означает, что в приведенной ниже строке кода переменным $а, $Ь и $с присваивается значение 42:
$a=$b=$c=42;
В этой строке переменной $с присваивается значение 42, затем $Ь присваивается
значение выражения $с=42 (равное 42). Переменной $а присваивается значение выра
жения $Ь=42. Переменная, которой присвоено значение, может использоваться в пра
вой части оператора присваивания, как показано ниже: . . .
$a=89*$a;
$count=$count+l;
Правая часть выражения оператора присваивания вычисляется с использованием старого значения переменной $а или $count. Оператор присваивания во второй строке имеет специальное название в Perl — инкремент. Мы еще остановимся на таких операторах подробнее.
Числовые операторы
У Perl имеется несколько операторов, которые предназначены для использования в числовых выражениях. Некоторые из них вам уже встречались, а с остальными мы сейчас познакомимся. Первой разновидностью уже знакомых вам операторов являются арифметические операторы. В табл. 2.3 приведен их список.
Арифметические операторы выполняются в порядке приоритетов, принятых в математике: сначала возведение в степень, затем умножение, деление, вычисление остатка от деления и только затем сложение и вычитание. Если вы не уверены; в каком порядке будут выполняться операции в вашем выражении, используйте скобки. В выражениях с вложенными скобками вначале вычисляются элементы выражения во внутренних скобках:
5*6+9; | Значение 39
5*(6+9); | Значение 75
5+(6*(4-3));| Значение 11
Строковые операторы
Perl может оперировать не только числами, но и строками. Первым строковым оператором, который мы рассмотрим, является оператор конкатенации (.) • Этот оператор берет строку, находящуюся слева от него, и строку справа и возвращает строку, объединяющую предыдущие две, например:
$а=»Привет, мой Свет!»;
$Ь=» Как я рад тебя видеть»;
$с=$а . $Ь;
В этом примере переменные $а и $Ь имеют простые строковые значения. В последней строке переменной $с присваивается значение Привет, мой Свет! Как я рад тебя видеть, при этом значения переменных $а и $Ь не изменяются.
Конкатенацию строк можно выполнить и другим способом. Раньше мы уже говорили, что внутри строк, заключенных в двойные кавычки, Perl «выискивает» имена переменных. Найденные переменные интерпретируются. Это означает, что имя переменной внутри строки в двойных кавычках заменяется реальным значением этой переменной, например:
$name=»Джон»;
print «Привет, $name!»;
В этом примере Perl ищет в строке в двойных кавычках имена переменных, находит имя $name и подставляет вместо него строку Джон. Этот процесс называется интерпретацией значения переменных. Для того чтобы переменные не интерпретировались, нужно заключить строку в одинарные кавычки (тогда Perl вообще никак не будет анализировать эту строку) или поставить обратную косую черту перед идентификатором имени переменной, например: . —
$name=»Ringo»;
print ‘Я использую переменную Sname’; | He будет печатать слово «Ringo»
print «Я использую переменную $name»; | Также не будет печатать слово «Ringo»
Оба оператора print из предыдущего примера напечатают строку Я использую переменную $name, при этом переменная Sname не будет интерпретирована. Итак, оператор конкатенации можно заменить строками в двойных кавычках следующим образом:
$fruit1=»яблоки»;
$fruit2=»и груши» ;
$bowl=»$fruitl $fruit2″;
Там, где Perl не может четко выделить имя переменной из остальной части строки, заключите имя переменной в фигурные скобки {}. Подобный прием позволяет Perl легко определить имя переменной, например:
$name=»Thurs»;
print «I went to the fair on ${date}day»;
Без этих скобок непонятно, какую переменную должен интерполировать Perl — $date или $dateday. Фигурные скобки однозначно указывают, что $date. . Следующим строковым оператором является оператор повторения х. В операторе х указываются два аргумента — строка, которую необходимо повторить, и число повторений. Например:
$line=»-» х 70;
В предыдущем примере символ «-» повторяется 70 раз оператором х. Результат сохраняется в переменной $line.