Что не входит в отчет о проведении стратегического аудита |
Переменные Perl
8.1. Переменные Perl
В языке Perl существует только три типа данных: скалярный тип данных (по-другому - строки из символов), массив скаляров (или просто массивы) и ассоциативные массивы (хэш массивы). Это объясняется тем, что язык Perl предназначен, прежде всего, для обработки символьных данных, и другие операции (например, численные вычисления) носят побочный характер. А для обработки символьной информации этих типов данных вполне достаточно. Ниже дается описание этих типов.
8.1.1. Строки
Строки представляют собой просто последовательность символов. Эта последовательность может содержать и одиночный символ, и целое число, и число с плавающей точкой. Применение конкретной операции к строке определяется ее контекстом - значением и окружающей обстановкой.
Строковые константы бывают двух видов:
- Заключенные в апострофы символы. В этом случае все символы воспринимаются "как есть", то есть игнорируются метасимволы, переменные внутри строки и т.п. Например, строка:
'\\cond = $cond\n'
Листинг 8.1. - Заключенные в двойные кавычки символы. В этом случае происходит подстановка метасимволов, замена имен переменных их значением и т.п. Например, строка:
"\\cond = $cond\n"
Листинг 8.2.\cond = <значение переменной $cond><перевод строки>
Листинг 8.3.
Здесь метасимвол: '\n' означает перевод строки (переход на новую строку), а '\\' означает знак '\'. Сами знаки " ' " и " " " в строке передаются как метасимволы: " \' " и " \" ".
В таблице 8.1 представлены метасимволы языка Perl, как входящие в состав символьных констант, так и предназначенные специально для регулярных выражений.
Переменная строкового типа обозначается следующим образом:
$<идентификатор>Листинг 8.4.
Например:
[Пример 01]
$i = '0'; $String = "Мой папа\n";
Существуют предопределенные Perl переменные строкового типа и функции, применимые только к строкам. Подробную информацию по ним смотри [59] и таблицы 8.2 и 8.3 соответственно.
[Пример 02]
$i = 1; $j = 10; $a = $i + $j # Верно, результат $a=11.0 $b = $j.' '; # Верно, результат $b = '10.0 ' $c = $a + $b; # Ошибка! Складывается число и строка.
8.1.2. Массивы
Массивы в языке Perl - специальные переменные, содержащие в себе несколько строковых значений. Переменные-массивы обозначаются следующим образом:
@<идентификатор>Листинг 8.5.
Переменной-массиву может применяться операция индексирования. Ее синтаксис следующий:
$<строковая переменная>=$<переменная-массив>[$<индекс>]Листинг 8.6.
где $<индекс> - строковая переменная, принимающая целое значение.
Максимальный индекс массива равен:
$<идентификатор массива>Листинг 8.7.
или
$#<идентификатор массива>Листинг 8.8.
Первое определение является более новым. Минимальное значение индекса - ноль.
Существуют предопределенные в Perl переменные типа массива скаляров и функции, работающие с этим типом данных. Подробнее о них смотри [59] и таблицы 8.2 и 8.3 соответственно.
Массивы незаменимы в тех случаях, когда необходимо загрузить в память содержимое всего текстового файла.
8.1.3. Ассоциативные массивы
Ассоциативные массивы на языке Perl представляют собой массив парных символьных данных, первая строка которого содержит уникальный ключ, по которому ищется другая строка - значение ключа. Обозначение ассоциативных массивов следующее:
%<идентификатор массива>Листинг 8.9.
Для присвоения значений ассоциативному массиву необходимо использовать конструкцию:
[Пример 03]
# В этом примере определяются два ассоциативных массива: # %a и %b, причем они определены одними и теми же данными. %a = { "key1", "value1", "key2", "value2" }; %b = { "key1" => "value1", "key2" => "value2" };
Доступ к значению хэш массива по его ключу осуществляется с помощью конструкции: $a, где a - идентификатор хэш массива, например:
$str = $a{ "key2" }Листинг 8.10.
где %a определена в [примере 03], и переменной $str будет присвоено значение: "value2". Аналогично происходит добавление и изменение значения ассоциативного массива по ключу, например:
[Пример 04]
$a{ "key1" } = "значение1"; # Изменение значения ключа "key1" $a{ "key3" } = "value3"; # Добавление нового элемента в массив
Для хэш массивов определены функции, работающие с этим типом данных. Подробнее о них см. [59].
Хэш массивы широко применяются в CGI-сценариях в Интернете.