Изучаем Perl. Глава 2
В этой главе мы рассмотрим, как Perl манипулирует данными. Все компьютерные
программы используют данные некоторым образом. Некоторые программы используют
данные для персонализации. Например, почтовая программа могла бы запоминать
ваше имя, чтобы приветствовать вас при следующем старте. Другая программа,
скажем, которая производит поиск файлов на вашем жестком диске, могла
бы запоминать параметры последнего запуска, на случай если вы захотите
повторить поиск позже.
Литерал - это значение, представляемое "как есть" или закодированное
в вашем исходном коде. Когда вы видите "45.5" в программе, это действительно
означает сорок пять целых и пять десятых. Perl использует четыре типа
литералов:
- числа (числовой тип) - это наиболее базовый тип данных;
- строки (строковой тип) - это серия символов, рассматриваемых как единое
целое;
- массив - это серия чисел и строк, рассматриваемых как единое целое;
- ассоциативный массив - это наиболее сложный тип данных, который подробнее
будет обсуждаться в главе 3;
Числовые литералы
Числовые литералы используются достаточно часто. Они представляют собой
число, которое потребуется вашей программе для работы. Большую часть времени
вы будете использовать десятичное счисление, тем не менее, Perl позволяет
вам использовать также восьмеричное и шестнадцатеричное счисления.
Восьмеричное значение всегда должно начинаться с нуля. Шестнадцатеричное
значение начинается с "0x"
Стринговые литералы
Стринговый литерал представляет собой группу символов, заключенных в
кавычки, и рассматриваемых как единое целое. Стринговые литералы часто
используются в программах, например, для идентификации имен файлов и вывода
сообщений на экран. В Perl вы можете использовать одинарные кавычки "'",
двойные кавычки """, а также обратные одинарные кавычки "`".
Самая короткая из возможных строк не содержит ни одного символа. Самая
длинная строка заполняет всю наличную память. Это соответствует принципу
"отсутствия встроенных ограничений", которому Perl следует при каждой
возможности. Обычно строки представляют собой последовательности букв,
цифр и знаков препинания, коды которых лежат в диапазоне ASCII 32 - 126.
Однако возможность наличия в строке любого символа с кодом от 0 до 255
означает, что вы можете создавать, просматривать необработанные двоичные
данные и манипулировать ими как строками - то, что вызвало бы серьезные
трудности в большинстве других языков.
Строки с одинарными кавычками
Следующие примеры иллюстрируют использование стринговых литералов.
Реальное значение стринговых литералов в одинарных кавычках вы поймете
после прочтения главы 3.
Все что находится между двумя кавычками, считается составляющими строки.
Чтобы использовать одинарные кавычки в стринговых литералах как часть
строки вы должны поставить обратный слеш перед кавычками. Иначе Perl решит,
что в данном месте строка заканчивается.
Вы можете создать стринговый литерал из нескольких строк.
Например, вот так:
print 'Bill of Goods
Bread: $34 .45
Fruit: $45.00
======
$79.45';
ї
В строках с одинарными кавычками вы не можете использовать специальные
символы (n, t, r и т.д.). Все они будут считаться последовательностью
символов. Например, "n" - будет расцениваться не как переход на новую
строку, а просто как пара символов "" и "n".
Строки с двойными кавычками
Строки в двойных кавычках имеют почти такие же свойства, как строки в
Си. При работе с этим видом строк вы можете использовать весь набор специальных
символов, следующих за обратным слешем. Строки в Perl очень похожи на
строки в Си, но между ними есть существенная разница. Строки в Perl не
имеют нуль-завершителя.
Строки с обратными одинарными кавычками
Считается, что этот тип строк на самом деле не является типом данных
вообще. Дело в том, что Perl использует такой вид строк для выполнения
команд системы, независимо от того, на какой платформе работает данная
система.
Например, следующая команда выведет на экран список файлов в текущем
каталоге:
print `dir`;
ї
Все escape-последовательности, которые можно использовать в строках с
двойными кавычками, можно также использовать и в этом виде строк.
Массивы
В Perl массивы используются для хранения последовательностей данных.
Например, вы можете использовать массивы для хранения строк файлов или
списка файлов в текущем каталоге.
print "Here is an empty array:" . () . "<-- Nothing
there!n";
print (12, 014, 0x0c, 34.34, 23.3E-3);
print "n";
print ("This", "is", 'an', "array", 'of', "strings");
print "n";
print ("This", 30, "is", 'a', "mixed array", 'of', 0x08, "items");
ї
Данные внутри одного массива могут быть смешанные, то есть, любых типов.
Вложенные массивы
Во многих случаях простого списка недостаточно. Тогда вы можете использовать
вложенные массивы.
print (("Bright Orange", "Burnt"), ("Canary Yellow",
"Sunbeam"));
print (("Bright Orange", "Burnt"), " Middle ", ("Canary Yellow", "Sunbeam"));
ї
До сих пор мы не говорили о внутреннем представлении типов данных. Дело
в том, что с Perl вы почти никогда не должны волноваться на счет этого.
Однако важно знать, что на самом деле во внутреннем представлении подмножества
слиты в единое главное множество.
То есть две следующие конструкции абсолютно идентичны:
(("Bright Orange", "Burnt"), ("Canary Yellow", "Sunbeam"))
("Bright Orange", "Burnt", "Canary Yellow", "Sunbeam")
ї
Использование диапазона значений
В Perl существует оператор "..". Вместо такой конструкции:
print (1,2,3,4,5,6,7,8,9);
вы можете использовать такую:ї print (1..9);
ї
В определении массива использование оператора "двойная точка" называется
"оператором диапазона". Данный оператор обсуждается в главе 4. Оператор
диапазона работает следующим образом: интерпретатор просто берет первый
аргумент и прибавляет к нему единицу до тех пор, пока получившееся значение
не будет равно второму аргументу. Вы также можете использовать символы
в качестве аргументов. Например:
print ("a".."z");
ї
Данная строка выведет на экран символы от "a" до "z".
Итоги
В этой главе вы познакомились с числовыми и стринговыми литералами.
erazer@erazer.virtualave.net ">erazer@erazer.virtualave.net( mailto: )
site - ( http://webscript.ru/ ) //erazer.virtualave.net ( http://webscript.ru///erazer.virtualave.net )
|