Читаем Язык программирования Perl полностью

Элементы массива - это скалярные величины, доступ к которым происходит по их порядковому номеру (индексу). Поскольку элемент массива - это скаляр, то его обозначение состоит из разыменовывающего префикса $ перед именем массива, за которым в квадратных скобках стоит индекс. Индексы элементов массива задаются целыми числами, начиная с нуля. (Номер начального индекса массивов раньше мог задаваться значением специальной переменной $[, но сейчас эта возможность считается устаревшей, поэтому поступать так не рекомендуется.) Вот так выглядит в программе обращение к элементам массива:


@array # переменная-массив, хранящая список

$array[0] # первый элемент массива с индексом 0

$array[1] # второй элемент массива с индексом 1

$array[$i] # i-й элемент массива, считая с 0

$array # скаляр, не имеющий отношения к массиву @array


Если требуется обращаться к элементам массива, начиная с последнего, то используются отрицательные значения индексов:


$array[-1] # последний элемент, то есть 1-й от конца

$array[-2] # предпоследний элемент, то есть 2-й от конца

$array[-$n] # n-й элемент массива, считая с конца


Индекс последнего элемента массива, который всегда на единицу меньше размера массива, можно узнать, указав специальный префикс $# перед именем массива:


$last_index = $#array; # индекс последнего элемента @array



Так, например, можно выбрать элемент массива с помощью встроенного генератора случайных чисел rand, который возвращает дробное число от 0 до числа, указанного ему в качестве аргумента. Ограничим случайные числа номером последнего индекса в массиве и будем округлять их до целых значений функцией int:


$random_element = $array[int(rand($#array))];


В $#array можно присвоить новое значение последнего индекса, при этом размер массива изменится. Но такое действие обычно не требуется, так как массив при необходимости увеличивается автоматически. Размер массива в Perl не ограничивается, то есть массив может занимать всю отведенную программе память.

В операции присваивания отдельные элементы массива рассматриваются как обычные скаляры. Ниже приведены примеры, по-разному выполняющие одно и то же присваивание элементам массива:


$birthday[0] = 18; $birthday[1] = 12; $birthday[2] = 1987;

($birthday[0], $birthday[1], $birthday[2]) = (18, 12, 1987);


(Хотя более естественно для подобного присваивания воспользоваться срезом массива: @birthday[0, 1, 2] = (18, 12, 1987), но о срезах пойдет речь чуть позже в этой лекции.)

Если попытаться присвоить значение элементу с индексом больше текущего размера массива, массив автоматически увеличивается до необходимой длины, а добавленные элементы получают неопределенное значение:


$birthday[5] = 'Perl'; # размер @birthday теперь 5

# значение $birthday[3] и $birthday[4] не определено


При попытке обратиться к элементу массива с несуществующим индексом будет возвращено неопределенное значение, но ошибки во время выполнения программы не возникнет.


$array[$#array+100] # неопределенно


При использовании в качестве индекса массива дробного числа будет взята его целая часть, то есть $array[3.5] рассматривается как $array[3].

Часто требуется последовательно перебрать все элементы массива, от первого до последнего, для обработки или вывода их значений. Это можно сделать вполне традиционным образом, с помощью цикла for, как это записывается в языках C или Java, а именно:


for (my $i = 0; $i < scalar @array; $i++) {

print "$array[$i] ";

}


Perl предлагает для подобных действий более удобный способ с использованием цикла foreach, в котором все элементы массива поочередно совмещаются с указанной скалярной переменной. Эта переменная на время выполнения цикла становится синонимом очередного элемента массива, поэтому ее значение доступно не только для чтения, но и для изменения. Только что приведенный пример можно переписать так:


foreach my $element (@array) { # $element это синоним

print "$element "; # очередного элемента $array[$i]

}


Перейти на страницу:

Похожие книги

Оптимизация BIOS. Полный справочник по всем параметрам BIOS и их настройкам
Оптимизация BIOS. Полный справочник по всем параметрам BIOS и их настройкам

Прочтя эту книгу, вы узнаете, что представляет собой BIOS, какие типы BIOS существуют, как получить доступ к BIOS и обновлять ее. Кроме того, в издании рассказано о неполадках в работе BIOS, которые приводят, например, к тому, что ваш компьютер не загружается, или к возникновению ошибок в BIOS. Что делать в этот случае? Как устранить проблему? В книге рассказывается об этом и даже приводится описание загрузки BIOS во флэш-память.Также вы научитесь использовать различные функции BIOS, узнаете, как оптимизировать их с целью улучшения производительности и надежности системы. Вы поймете, почему рекомендуемые установки являются оптимальными.После прочтения книги вы сможете оптимизировать BIOS не хуже профессионала!Книга предназначена для всех пользователей компьютера – как начинающих, которые хотят научиться правильно и грамотно настроить свою машину, используя возможности BIOS, так и профессионалов, для которых книга окажется полезным справочником по всему многообразию настроек BIOS. Перевод: А. Осипов

Адриан Вонг

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Книги по IT
С компьютером на ты. Самое необходимое
С компьютером на ты. Самое необходимое

Рассказывается о работе в операционной системе Windows (на примере версий XP и 7), текстовом редакторе Word 2010 и других приложениях, необходимых каждому пользователю: архиваторах, антивирусах и программах для просмотра видео и прослушивания музыки (Winamp, QuickTime Pro). Большое внимание уделяется работе в Интернете. Рассказывается о программах для просмотра Web-страниц, об электронной почте, а также о различных полезных приложениях для работы в сети — менеджерах закачек файлов, ICQ, Windows Live Messenger, MSN и многих других. Во втором издании рассмотрена новая ОС — Windows 7, а также последние версии приложений для пользователей.Для начинающих пользователей ПК.

Андрей Александрович Егоров , Андрей Егоров

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT