Perl. Библиотека программиста

Массивы

Определение списка в программе

Требуется включить в программу список — например, при инициализации массива.

Вывод списков с запятыми

Требуется вывести список с неизвестным количеством элементов. Элементы разделяются запятыми, а перед последним элементом выводится слово and.

Изменение размера массива

Требуется увеличить или уменьшить размер массива. Допустим, у вас имеется массив работников, отсортированный по размерам оклада, и вы хотите ограничить его пятью самыми высокооплачиваемыми работниками. Другой пример — если окончательный размер массива точно известен, намного эффективнее выделить всю память сразу вместо того, чтобы увеличивать массив постепенно, добавляя элементы в конец.

Выполнение операции с каждым элементом списка

Требуется повторить некоторую операцию для каждого элемента списка.
Массивы часто используются для сбора интересующей информации – например, имен пользователей, превысивших свои дисковые квоты. Данные обрабатываются, при этом с каждым элементом массива выполняется некоторая операция. Скажем, в примере с дисковыми квотами каждому пользователю отправляется предупреждающее сообщение.

Перебор массива по ссылке

Имеется ссылка на массив. Вы хотите использовать foreach для обращения к каждому элементу массива.

Выборка уникальных элементов из списка

Требуется удалить из списка повторяющиеся элементы — например, при построении списка из файла или на базе выходных данных некоей команды. Рецепт в равной мере относится как к удалению дубликатов при вводе, так и в уже заполненных массивах.

Поиск элементов одного массива, отсутствующих в другом массиве

Требуется найти элементы, которые присутствуют в одном массиве, но отсутствуют в другом.

Вычисление объединения, пересечения и разности уникальных списков

Имеются два списка, каждый из которых содержит неповторяющиеся элементы. Требуется узнать, какие элементы присутствуют в обоих списках (пересечение), присутствуют в одном и отсутствуют в другом списке (разность) или хотя бы в одном из списков (объединение).

Присоединение массива

Требуется объединить два массива, дописав все элементы одного из них в конец другого.

Обращение массива

Требуется обратить массив (то есть переставить элементы в противоположном порядке).

Обработка нескольких элементов массива

Требуется удалить сразу несколько элементов в начале или конце массива.

Поиск первого элемента списка, удовлетворяющего некоторому критерию

Требуется найти первый элемент списка, удовлетворяющего некоторому критерию (или индекс этого элемента). Возможна и другая формулировка — определить, проходит ли проверку хотя бы один элемент. Критерий может быть как простым («Присутствует ли элемент в списке?»), так и сложным («Имеется список работников, отсортированный в порядке убывания оклада. У кого из менеджеров самый высокий оклад?»). В простых случаях дело обычно ограничивается значением элемента, но если сам массив может изменяться, вероятно, следует определять индекс первого подходящего элемента.

Поиск всех элементов массива, удовлетворяющих определенном критерию

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

Числовая сортировка массива

Требуется отсортировать список чисел, однако функция Perl sort (по умолчанию) выполняет алфавитную сортировку в ASCII-порядке.

Сортировка списка по вычисляемому полю

Требуется отсортировать список, руководствуясь более сложным критерием, нежели простыми строковыми или числовыми сравнениям.
Такая проблема часто встречается при работе с объектами или сложными структурами данных («отсортировать по третьему элементу массива, на который указывает данная ссылка»). Кроме того, она относится к сортировке по нескольким ключам – например, когда список сортируется по дню рождения, а затем по имени (когда у нескольких людей совпадают дни рождения).

Реализация циклических списков

Требуется создать циклический список и организовать работу с ним.

Случайная перестановка элементов массива

Требуется случайным образом переставить элементы массива. Наиболее очевидное применение — тасование колоды в карточной игре, однако аналогичная задача возникает в любой ситуации, где элементы массива обрабатываются в произвольном порядке.