Perl / 2. Списки и массивы

Если скалярные значения представляют «единственное число» в Perl, как упоминалось в начале главы 2, «множественное число» представQ ляется списками и массивами. Список содержит упорядоченную коллекцию скалярных значений. Массив представляет собой переменную для хранения списка. В Perl эти два термина часто используются как синонимы. Но если выражатьQ ся точнее, список – это данные, а массив – переменная. В программе можно создать списочное значение, которое не хранится в массиве, но любая переменная массива содержит список (хотя этот список может быть пустым). На рис. 3.1 изображен список, хранящийся в массиве или нет.
Статьи раздела '2. Списки и массивы':
в списочном контексте
Уже встречавшийся нам оператор изменяет свое поведение в списочном контексте. Как говорилось ранее, в скалярном контексте возвращает первую строку входных данных. В списочном контексте он возвращает все оставшиеся строки до конц...
Главная служебная переменная: $_
Если управляющая переменная не указана в начале цикла foreach, Perl по умолчанию использует служебную переменную $_. Она (в целом) ведет себя как любая другая скалярная переменная, несмотря на необычное имя. Пример: foreach (1....
Интерполяция массивов в строках
Массивы, как и скаляры, могут интерполироваться в строках, заключенных в кавычки. Элементы массивов при интерполяции автоматически разделяются пробелами: @rocks = qw{ flintstone slate rubble }; print "quartz @rocks limestone\n...
Использование выражений, создающих скаляры, в списочном контексте
В этом направлении все тривиально: если выражение обычно не имеет списочного значения, скалярное значение автоматически преобразуется в список из одного элемента: @fred = 6 * 7; # Список из одного элемента (42) @barney = "hell...
Использование выражений, создающих списки, в скалярном контексте
Многие выражения обычно используются для создания списков. Что вы получите, используя такое выражение в скалярном контексте? Посмотрите, что скажет автор этой операции. Обычно автором является Ларри, а все сведения приводятся в до...
Обращение к элементам массива
Всем, кто уже работал с массивами в других языках, покажется вполне естественным, что в Perl предусмотрена возможность обращения к элементу массива по индексу. Элементы массивов нумеруются последовательными целыми числами с шагом ...
Оператор reverse
Оператор reverse получает список значений (например, из массива) и возвращает его переставленным в обратном порядке. Например, если вас огорчает, что диапазонный оператор .. работает только «снизу вверх», проблема легко решается: ...
Оператор sort
Оператор sort получает список значений (например, из массива) и сортирует их во внутреннем порядке символов. Для ASCIIQстрок это будет «ASCIIQалфавитный» порядок. Конечно, ASCIIQсортировка, где все буквы верхнего регистра предшест...
Операторы pop и push
Новые элементы можно добавлять в массив, просто сохраняя их в элементах с новыми индексами. Но настоящие программисты Perl не используют индексы.3 По этой причине в нескольких ближайших разделах мы представим приемы работы с масси...
Операторы shift и unshift
Операторы push и pop выполняют операции в конце массива (у правого края, среди элементов с большими индексами – в зависимости от того, как вам удобнее думать об этом). Похожие операторы unshift и shift выполняют соответствующие де...
Принудительное использование скалярного контекста
Иногда бывает необходимо принудительно использовать скалярный контекст там, где Perl ожидает получить список. В таких ситуациях используется псевдофункция scalar. Она не является полноценной функцией и всего лишь сообщает Perl о н...
Скалярный и списочный контекст
Мы подошли к самому важному разделу этой главы. Более того, это самый важный раздел во всей книге. Можно без преувеличения сказать, что от того, насколько хорошо вы поймете этот раздел, будет зависеть вся ваша карьера программиста...
Сокращение qw
Списки простых слов (как в последнем примере) достаточно часто используются в программах. Сокращение qw позволяет быстро создать такой список без множества лишних кавычек: qw( fred barney betty wilma dino ) # То же, что прежде,...
Специальные индексы массивов
При записи в элемент с индексом, выходящим за границу массива, массив автоматически расширяется до необходимых пределов – его длина не ограничивается, пока в системе остается свободная память. Если Perl потребуется создать промежу...
Списочное присваивание
Вы уже знаете, как присвоить переменной скалярное значение. Аналогичным образом можно присвоить списочное значение списку из нескольких переменных: ($fred, $barney, $dino) = ("flintstone", "rubble", undef); Все три переменны...
Списочные литералы
Массив (способ представления списочных значений в программе) инициализируется списком значений, разделенных запятыми и заключенных в круглые скобки. Эти значения образуют элементы списка. Примеры: (1, 2, 3) # Список из трех зн...
Управляющая конструкция foreach
Последовательная обработка всех элементов массива или списка – весьма стандартная задача; специально для ее решения в Perl определена управляющая конструкция foreach. Цикл foreach перебирает список значений и выполняет одну итерац...

Страницы: 1