скалярные, ассоциативные. Их инициализация и обращение к элементам массива.
Массив (скалярный) является упорядоченным списком скаляров.
Каждый элемент массива имеет порядковый номер (индекс), с помощью которого к нему можно получить доступ. Нумерация элементов начинается с нуля.
Перед именем переменной типа массив указывается знак @, а для доступа к определенному элементу массива необходимо ставить знак $, так как определенный элемент массива является скаляром.
Тип скалярной переменной не фиксирован и определяется динамически в зависимости от контекста
Скалярный массив:
Является упорядоченным списком скаляров.
Каждый элемент массива имеет порядковый индекс, с помощью которого к нему можно получить доступ.
Перед именем переменной-массива необходимо ставить знак ‘@’
При доступе к определенному элементу массива ставится знак ‘$’, так как он фактически является скаляром.
Хеш-таблица представляет собой ассоциативный массив, позволяющий ассоциировать строку (ключ) со скаляром (значение).
Строка называется ключом, а скаляр в хеш-таблице значением.
Перед именем переменной-списка необходимо ставить знак процента %, а для доступа к определенному элементу массива рекомендуется ставить знак $.
Хеш-таблица представляет собой массив, где в нечетных позициях находятся ключи, а на четных — значения.
Например, для того чтобы присвоить значение трем элементам массива %dict с индексами first, second и third, можно воспользоваться одним из двух способов, указанных ниже.
$dict {‘first’ } = «первый»; $dict {‘second’ } = «второй»;
$dict {‘third’ } = «третий»;
Поиск Perl.
В состав языка Perl входят средства поиска и замены, причем, задавая шаблон для поиска, можно использовать регулярные выражения.
Оператор поиска m// записывается следующим образом:
m/шаблон/
Если значение переменной $_ содержит подстроку, соответствующую указанному шаблону, оператор поиска возвращает значение true.
Рассмотрим следующий пример:
$_ = <INPUT>;
if (m/Scripts/)
{ print «В URL есть каталог Scripts \n»; }
else
{ print » В URL нет каталога Scripts \n»; }
Оператор замены Perl
s/// записывается следующим образом:
s/шаблон поиска/выражение для замены/[набор модификаторов]
При выполнении оператора s/// производится поиск соответствия шаблону, и если поиск завершается успешно, найденная подстрока заменяется указанным выражением. Подобно оператору m//, оператор s/// использует переменную $_. Ниже приведен простейший пример применения оператора s///.
$_ = «CGI-сценарий написан на языке С»;
s/C$/Perl/;
print;
В результате выполнения сценария на консоль будет выведена следующая строка:
CGI-сценарий написан на языке Perl
Модификаторы.
g — глобальный поиск. Если этот модификатор не указан, после обнаружения первого соответствия оператор s/// закончит свою работу. Поэтому при отсутствии модификатора g будет произведено не более одной замены.
i — указывает, что при поиске следует игнорировать регистр символов.
e — указывает, что последовательность символов для замены следует интерпретировать не как подстроку, а как выражение Perl.
Чтобы поиск или замена производились в строке, содержащейся в нужной переменной, надо использовать следующее выражение:
Переменная =~ оператор_поиска_или_замены
Так, например, для преобразования шестнадцатеричных чисел, содержащихся в переменной $string, в десятичное представление можно использовать инструкцию:
$string =~ s/([0-9A-Fa-f]+)(H|h)/hex($1)/ge;
Ошибка — Vampyr`s House!
|
|
|
Копирование материалов с сайта возможно только в случае размещения ссылки на первоисточник. |
Содержание: Доступ к элементам массива Если скаляр был «единственным числом» в Perl, как мы его описали. в начале главы 2, «Скалярные данные», «множественное число» в Perl представлено списками и массивами. Список — это упорядоченный набор скаляров. Ан Массив — это переменная, содержащая список. В Perl, эти два термина часто используются так, как если бы они сменный. Но, если быть точным, список — это данные, а массив — это переменная. У вас может быть значение списка, которого нет в массив, но каждая переменная массива содержит список (хотя этот список может быть пустым). На рис. 3-1 представлен список, независимо от того, хранится он в массиве или нет. Рис. 3-1. Список из пяти элементовКаждый элемент массива или списка — это отдельная скалярная переменная с независимым скалярное значение. Эти значения упорядочены, т. е. имеют конкретная последовательность от первого до последнего элемента. Элементы массива или списка проиндексировано маленькими целыми числами, начиная с ноль[67] и считая единицами, поэтому первый элемент любого массива или список всегда является нулевым элементом.
Поскольку каждый элемент является независимым скалярным значением, список или массив может содержать числа, строки, значения undef или любые смесь различных скалярных величин. Тем не менее, это наиболее общее, чтобы все элементы были одного типа, например, список книг названия (все строки) или список косинусов (все числа). Массивы и списки могут содержать любое количество элементов. Самый маленький не имеет элементов, а самый большой может заполнить всю доступную память. Опять же, это соответствует философии Perl. «без лишних ограничений». Если вы использовали массивы на другом языке, вы не будете удивлен, обнаружив, что Perl предоставляет способ индекс массив для ссылки на элемент по числовому индексу. элементы массива нумеруются с помощью последовательные целые числа, начиная с нуля и увеличиваясь на единицу для каждого элемент, например: $fred[0] = "ябба"; $fred[1] = "дабба"; $fred[2] = "ду"; Само имя массива (в данном случае «fred») из совершенно другого пространства имен, чем используют скаляры; ты мог бы скалярная переменная с именем $fred в той же программе, и Perl будет относиться к ним как к разным вещам и не будет сбит с толку.[68] (Однако ваш программист может быть сбит с толку, поэтому не капризно делайте все ваши имена переменных одинаковыми!)
Вы можете использовать элемент массива, такой как $fred[2] в каждое место[69], где вы можете использовать любую другую скалярную переменную, например $фред. Например, вы можете получить значение из элемент массива или измените это значение теми же выражениями мы использовали в предыдущей главе:
print $fred[0]; $fred[2] = "Диддли"; $fred[1] .= "что есть"; Конечно, нижним индексом может быть любое выражение, дающее числовое значение. ценность. Если это уже не целое число, оно автоматически усекается до следующего меньшего целого числа: $число = 2,71828; напечатать $fred[$number - 1]; # То же, что и при печати $fred[1] Если нижний индекс указывает на элемент, который находится за концом массива, соответствующее значение будет undef. Это так же, как с обычным скаляры; если вы никогда не сохраняли значение в переменной, это недеф. $blank = $fred[142_857]; # неиспользуемый элемент массива дает undef $блан = $мел; # неиспользуемый скаляр $mel также дает undef
Copyright © 2002 O’Reilly & Associates. Все права защищены. |
Архив книг/руководств/инструкций/учебников/документации
faqs.org
Добавление новых документов
- Internet RFC Index
- Указатель часто задаваемых вопросов Usenet
- Другие часто задаваемые вопросы
- Документы
- Инструменты
- Поиск
- Часто задаваемые вопросы по поиску
- Поиск RFC
- Дом IFC
- Города
- страны
- Больницы
- Рейтинг веб-хостинга
Общие документы
Документы по Linux
Предложите информационный ресурс (руководство, руководство, инструкции, документацию и т. д.) для включения в наш архив, отправив нам его веб-адрес.
(вместо этого используйте форму ниже, если вы являетесь автором):
|