Использование переменных в Perl
Переменные предназначены для хранения и обработки данных.
Переменные задаются именами, определяющими области памяти, в которых хранятся значения переменных. Значениями переменных могут быть данные различных типов (целые или вещественные числа, последовательности символов, логические значения и так далее).
Переменная в программе представлена именем и служит для обращения к данным определенного типа. Конкретное значение переменной хранится в ячейках оперативной памяти.
Имя переменной в языке Perl |
|
Имя каждой переменной (идентификатор) может состоять из различных символов (латинские буквы, цифры и так далее),
но должно обязательно начинаться с символа $, сразу после которого не должна идти цифра.
Примеры правильных имен переменных: $i, $k7, $summa, $name_surname, $name_4 и т.д.
Примеры НЕправильных имен переменных: $2_name (идентификатор не может начинаться с цифры), $Name@Surname (недопустимый символ @).
Perl не требует объявления переменных |
|
В большинстве языков программирования переменные до их использования в программе объявляются как переменные определенного типа, информируя транслятор, что в них можно хранить данные соответствующего типа. Как мы помним, в Perl нет операторов объявления переменных определенного типа; они автоматически объявляются при первом их использовании в конструкциях языка, например в операторе присваивания значения переменной.
Что могут хранить переменные в Perl? |
|
В языке Perl переменные могут содержать числовое значение или строку символов.
Тип данных, которые находятся в переменной, определяет тип самой переменной: числовая или строковая.
Над различными типами переменных допустимы различные операции. С числовыми
переменными возможны арифметические операции и операции сравнения, со строковыми - операции
преобразования символьных строк и также операции сравнения.
Преобразование типов переменных |
|
Переменная может хранить только одно значение: числовое или строковое, причем
не существует никакого способа определить, какой именно тип данных
в ней содержится. Дело в том, что при использовании этих переменных в различных
операциях хранимые в них данные автоматически преобразуются из одного типа в
другой, т. е. в арифметических операциях строка преобразуется в число, а в
строковых операциях числовое значение преобразуется в строковое.
Присвоение значения переменной |
|
Присваивание переменной какого-либо значения числа или строки, либо присваивание одной переменной
значения другой переменной является наиболее часто выполняемым действием в программе, написанной
на любом языке программирования.
Операция присваивания обозначается в Perl знаком =, слева от которого
указывается имя переменной, а слева - помещаемое в эту переменную значение. Например:
$i = 7;
$str = 'Пятница';
$text = "Perl is the beautiful programming language";
$x = $y;
В качестве присвиваемого значения может быть использован результат арифметической
или другой операции. Например, оператор:
$a = $b+3;
вычислит значение выражения, записанного справа, и присвоит его переменной $а.
Какое значение имеет переменная, если ей ничего не присвоено? |
|
Какое значение мы получим, если попытаемся воспользоваться переменной ничего
не присваивая ей? Если извлекаемое значение используется, как число, то это
будет 0, а если как строка - то "пустая строка" (не содержащая ни одного символа).
В качестве внутреннего представления всех чисел используется формат с плавающей
запятой двойной точности (double). Иными словами, среди внутренних форматов нет
целочисленного - все числа имеют дробную часть. Тем не менее, в большинстве
случаев вы можете не обращать на это внимания, и Perl сделает все сам как надо.
Например, если вы используете величины в контексте, где только целочисленные
значения имеют смысл, Perl сам автоматически усечет число.
При необходимости, усечение можно сделать вручную, используя функцию int().
#!/usr/bin/perl
print "Content-type: text/html\n\n";
$a = 4;
$b = 3;
$c = $a + $b;
print "Сумма $a и $b равна $c";
|
Результатом работы скрипта будет сообщение: Сумма 4 и 3 равна 7.
PERL содержит два формата строк. Первый формат имеет вид строки,
заключенной в апострофы, например, 'текст'. Такие строки воспринимаются
интерпретатором буквально, без анализа их содержимого. Например, строка:
print 'Сумма $a и $b равна $c\n';
выведет следующее сообщение: Сумма $a и $b равна $c\n. Видно,
что интерпретатор "не пытался" заменить переменные $a и $b их значениями,
а также не выполнил переход на новую строчку, заданный управляющей
последовательностью \n.
Второй формат имеет вид строки, заключенной в кавычки, например, "текст".
Такие строки анализируются интерпретатором, который заменяет в них имена
переменных и управляющих последовательностей на соответствующие значения.
Это означает, что в строке можно задать имя переменной, которое при
вычислениях заменяется значением, содержащимся в переменной на момент
вычислений.
Например:
$a = 4;
$b = 3;
$c = $a + $b;
print "Сумма $a и $b равна $c\n";
Как мы уже видели выше, эта программа выведет строку: Сумма 4 и 3 равна 7 и осуществит переход на следующую строчку.
Посмотрим еще один пример:
$a = 4;
$b = 3;
$c = $a + $b;
$t = "Сумма $a и $b равна $c\n";
print $t;
Результатом работы этой программы также будет: Сумма 4 и 3 равна 7. Однако
теперь это сообщение сначало было присвоено переменной $t, а потом выведено
из нее оператором print.
Использование переменных в HTML-коде |
|
В заключение посмотрим еще один пример, в котором переменные используются
внутри HTML-кода, что позволяет изменять отображаемое содежимое веб-страницы.
#!/usr/bin/perl
$pupils=29;
$nomer='восемь';
$gruppa="номер $nomer";
print "Content-type: text/html\n\n";
print <<ENDHTML;
<html>
<head>
<title>Пример использования переменных</title>
</head>
<body>
В группе $gruppa обучается $pupils учащихся.
</body>
</htmL>
ENDHTML
|
Результат работы скрипта показан на следующем рисунке:
Изменив значения переменных, мы получим в окне браузера другое сообщение.
Попробуйте это сделать самостоятельно.
Глобальные и локальные переменные |
|
И последнее, о чем нам здесь хотелось бы упомянуть в связи с обсуждением
переменных Perl, - это области видимости переменных, т. е. области доступности
переменных. Во всех приведенных примерах все переменные являются глобальными,
они доступны из любой точки программы. Язык Perl, однако, позволяет создавать
переменные с областью видимости, ограниченной блоком или телом подпрограммы.
Это так называемые локальные переменные, имена которых могут совпадать с
именами глобальных переменных, и которые существуют, только пока выполняются
операторы некоторого блока или подпрограммы. После завершения выполнения
операторов блока, эти переменные уничтожаются.
С локальными переменными мы познакомимся поближе, когда речь пойдет об
использовании функций.