Шаг 7.
Скалярный тип данных

    На этом шаге мы опишем использование скалярного типа данных в языке Perl.

    Скалярный тип данных в Perl предназначен для представления и обработки числовых данных и последовательности символов, называемых строками. Для задания в программе перечисленных данных используются буквальные константы, или литералы: числовые и строковые.

    Числовые литералы используются для представления обычных чисел, необходимых для реализации какого-либо алгоритма в программе Perl.

    Некоторые системные установки или анализ некоторых системных параметров легче осуществлять с использованием чисел, представленных в восьмеричной или шестнадцатеричной системах счисления. Форма записи таких чисел аналогична их синтаксису в языке С: любое целое число, начинающееся с нуля "0", трактуется интерпретатором как восьмеричное целое число, а символы, непосредственно следующие за комбинацией "0x", рассматриваются как шестнадцатеричные цифры. При использовании восьмеричных чисел следует помнить, что в них не может быть цифры больше, чем 7, а в шестнадцатеричных числах кроме десяти цифр от 0 до 9 используются буквы A или a, B или b, C или c, D или d, E или e, F или f для обозначения недостающих цифр числа.

    Строковые литералы (строки) представляют последовательность символов, заключённую в:

кавычки, которая рассматривается как единое целое.

    В строке, ограниченной одинарными кавычками, нельзя использовать ESC-последовательности, а также в неё нельзя подставить значение переменной. Единственное исключение составляют две управляющие последовательности: (\') и (\\). Первая используется для отображения одинарной кавычки в самой строке, так как иначе интерпретатор рассматривал бы первую, встретившуюся ему одинарную кавычку как признак завершения строки, что не соответствовало её включению в строку. Вторая последовательность используется для отображения самой обратной косой черты. Примеры задания строковых литералов, ограниченных одинарными кавычками, можно найти в таблице 1.

Таблица 1. Символьные литералы, ограниченные одинарными кавычками
Строка Отображение Комментарий
'Простая строка #1' Простая строка #1 Строка без управляющих последовательностей.
'\'perl.ехе\'' 'perl.ехе' Строка с одинарными кавычками.
'D:\\perl.ехе' D:\perl.ехе Строка с обратной дробной чертой.
'Последовательность
\n'
'Последовательность
\n'
Управляющая последовательность \n не влияет на отображение строки/
'     Завтрак
Бутерброд с ветчиной
Чашка кофе.'
     Завтрак
Бутерброд с ветчиной
Чашка кофе.
Многострочный символьный литерал отображается в нескольких строках.

    Строковый литерал (последний пример в таблице) может распространяться на несколько строк программы. Для этого при его вводе с клавиатуры следует использовать клавишу Enter для перехода на новую строку. Многострочные литералы отображаются на стольких строках, на скольких они заданы. Это означает, что символ перехода на новую строку, введённый с клавиатуры, сохраняется в символьном литерале, ограниченном одинарными кавычками. Следует заметить, что это справедливо и для строковых литералов, ограниченных двойными кавычками.

    Строки в двойных кавычках позволяют вставлять и интерпретировать управляющие последовательности, а также осуществлять подстановку значений переменных, содержащих скаляры или списки. Управляющие последовательности (таблица 2) при выводе строк могут интерпретироваться как символы новой строки, табуляции и т. п., а могут изменять регистр следующих за ними букв.

Таблица 2. Управляющие последовательности
Управляющая последовательность Значение
\a Звонок.
\b Возврат на шаг.
\e Символ ESC.
\f Перевод формата.
\n Переход на новую строку.
\r Возврат каретки.
\t Горизонтальная табуляция.
\v Вертикальная табуляция.
\$ Знак доллара.
\@ AT коммерческое.
\0nnn Восьмеричный код символа.
\xnn Шестнадцатеричный код символа.
\cn Эмулирует нажатие комбинации клавиш Ctrl+n. Например, \cc соответствует Ctrl+C.
\l Переводит следующий символ в нижний регистр.
\u Переводит следующий символ в верхний регистр.
\L Переводит следующую за ней последовательность символов, ограниченную управляющей последовательностью , в нижний регистр.
\Q В следующей за ней последовательности символов, ограниченной управляющей последовательностью , перед каждым не алфавитно-цифровым символом вставляет обратную дробную черту.
\U Переводит следующую за ней последовательность символов, ограниченную управляющей последовательностью , в верхний регистр.
\E Ограничивает действие управляющих последовательностей \L, \Q и \U.
\\ Символ обратной дробной черты.
\" Двойные кавычки.
\' Одинарные кавычки.


    Замечание. Если после обратной косой черты в строковом литерале, ограниченном двойными кавычками, следует символ, который не составляет с ней управляющую последовательность, то обратная косая черта не отображается при выводе строки.

    Примеры строк в двойных кавычках представлены в таблице 3.

Таблица 3. Символьные литералы, ограниченные двойными кавычками
Строка Отображение Комментарий
"\Uline\E #1" LINE #1 Управляющие последовательности перевода регистра \l, \u, \L и \U действуют только на буквы латинского алфавита и не применимы к буквам русского алфавита.
"Конец страницы\f" Конец страницы При выводе на экран монитора или в файл в конце строки отображается символ перехода на новую страницу; при выводе на принтер печать начинается с новой страницы после вывода этой строки.
"\tЗавтрак\n
Бутерброд с ветчиной\n
Чашка кофе\n"
       Завтрак
Бутерброд с ветчиной
Чашка кофе
Символьный литерал задан одной строкой с управляющими символами.

    Последней разновидностью строковых литералов являются строки в обратных кавычках, которые, по существу, не являются строками данных в том смысле, что содержащиеся в них символы не обрабатываются при выводе интерпретатором языка Perl как некоторый поток отображаемых символов. Встретив строку в обратных кавычках, интерпретатор передает её на обработку операционной системе, под управлением которой он функционирует. Она выполняет переданную ей команду и возвращает в программу Perl результаты выполнения в виде строки, которую в дальнейшем можно использовать для организации вычислений. Таким образом, строки в обратных кавычках должны содержать значимую для операционной системы последовательность символов: команду операционной системы, строку загрузки приложения и т. д. Например, при выводе строки `dir` оператором print отобразится не слово "dir", а результат выполнения команды dir операционной системы. В системе Windows эта команда отобразит содержимое текущей папки.

    Завершая разговор о литералах, следует упомянуть о специальных литералах языка Perl: _LINE_, _FILE_, _END_ и _DATA_. Они являются самостоятельными лексемами, а не переменными, поэтому их нельзя вставлять в строки. Литерал _LINE_ представляет номер текущей строки текста программы, а _FILE_ - имя файла программы. Литерал _END_ используется для указания логического конца программы. Информация, расположенная в файле программы после этого литерала, не обрабатывается интерпретатором, но может быть прочитана через файл с дескриптором DATA. Последний литерал _DATA_ аналогичен литералу _END_, только дополнительно он открывает файл с дескриптором DATA для чтения информации, находящейся в файле программы после него. Приведём пример, демонстрирующий использование специальных литералов.

$file =_FILE_;     # Помещаем в скалярную переменную имя файла
                   # программы.
$prog =_LINE_;     # Помещаем в скалярную переменную номер текущей 
                   # строки текста программы.
print "Находимся в строке: $prog\n",
         "Файл: $file"; 
_END_
print "Текст после лексемы _END_";

    Если программа хранится в файле с именем example1.pl, путь доступа к которому C:\PerlEx\, то на экран будут выведены следующие результаты:

   Находимся в строке: 3
   Файл: C:\PERLEX\EXAMPLE1.PL

    Обратите внимание, что результата выполнения последнего в программе оператора печати не наблюдается, так как он расположен после лексемы _END_.

    На следующем шаге мы поговорим о переменных языка Perl.




Предыдущий шаг Содержание Следующий шаг