На этом шаге мы опишем использование скалярного типа данных в языке
Perl.
Скалярный тип данных в Perl предназначен для представления и обработки числовых данных и последовательности символов, называемых строками. Для задания в программе перечисленных данных используются буквальные константы, или литералы: числовые и строковые.
Числовые литералы используются для представления обычных чисел, необходимых для реализации какого-либо алгоритма в программе Perl.
Некоторые системные установки или анализ некоторых системных параметров легче осуществлять с использованием чисел, представленных в восьмеричной или шестнадцатеричной системах счисления. Форма записи таких чисел аналогична их синтаксису в языке С: любое целое число, начинающееся с нуля "0", трактуется интерпретатором как восьмеричное целое число, а символы, непосредственно следующие за комбинацией "0x", рассматриваются как шестнадцатеричные цифры. При использовании восьмеричных чисел следует помнить, что в них не может быть цифры больше, чем 7, а в шестнадцатеричных числах кроме десяти цифр от 0 до 9 используются буквы A или a, B или b, C или c, D или d, E или e, F или f для обозначения недостающих цифр числа.
Строковые литералы (строки) представляют последовательность символов, заключённую в:
кавычки, которая рассматривается как единое целое.
В строке, ограниченной одинарными кавычками, нельзя использовать ESC-последовательности, а также в неё нельзя подставить значение переменной. Единственное исключение составляют две управляющие последовательности: (\') и (\\). Первая используется для отображения одинарной кавычки в самой строке, так как иначе интерпретатор рассматривал бы первую, встретившуюся ему одинарную кавычку как признак завершения строки, что не соответствовало её включению в строку. Вторая последовательность используется для отображения самой обратной косой черты. Примеры задания строковых литералов, ограниченных одинарными кавычками, можно найти в таблице 1.
Строка | Отображение | Комментарий |
---|---|---|
'Простая строка #1' | Простая строка #1 | Строка без управляющих последовательностей. |
'\'perl.ехе\'' | 'perl.ехе' | Строка с одинарными кавычками. |
'D:\\perl.ехе' | D:\perl.ехе | Строка с обратной дробной чертой. |
'Последовательность \n' |
'Последовательность \n' |
Управляющая последовательность \n не влияет на отображение строки/ |
' Завтрак Бутерброд с ветчиной Чашка кофе.' |
Завтрак Бутерброд с ветчиной Чашка кофе. |
Многострочный символьный литерал отображается в нескольких строках. |
Строковый литерал (последний пример в таблице) может распространяться на несколько строк программы. Для этого при его вводе с клавиатуры следует использовать клавишу Enter для перехода на новую строку. Многострочные литералы отображаются на стольких строках, на скольких они заданы. Это означает, что символ перехода на новую строку, введённый с клавиатуры, сохраняется в символьном литерале, ограниченном одинарными кавычками. Следует заметить, что это справедливо и для строковых литералов, ограниченных двойными кавычками.
Строки в двойных кавычках позволяют вставлять и интерпретировать управляющие последовательности, а также осуществлять подстановку значений переменных, содержащих скаляры или списки. Управляющие последовательности (таблица 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.
Строка | Отображение | Комментарий |
---|---|---|
"\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.