Как известно, массив представляет собой структуру данных, содержащую одно или несколько значений величин одного типа, например, 100 имен студентов. Perl содержит несколько встроенных функций, которые помогают работать с элементами массива. В следующих разделах рассматривается несколько основных функций для обработки массивов.
Функции PUSH И POP
Скрипты языка Perl используют фикции push и pop для того, чтобы добавлять и удалять элементы с конца массива. Иными словами, функции push и pop позволяют скриптам выполнять операции состеком по принципу: последним вошел, первым вышел. Функция push имеет следующий формат:
push(@ARRAY, LIST);
Следующий фрагмент иллюстрирует использование функции push:
@list = (); push(@list,10,20); # @list теперь (10,20) push(@list,1..3); # @list теперь (10,20,1,2,3)
В противоположность этому функция pop удаляет элемент, который был вставлен в стек последним и возвращает значение этогоэлемента. Функция pop имеет следующий формат:
$value = pop(@ARRAY);
Следующий фрагмент программы иллюстрирует использование функции pop:
# Возьмём @list из предыдущего примера print pop(@list); # Выведет 3 print pop(@list); # Выведет 2 # Теперь @list (10,20)
Функция SHIFT
Функция shift удаляет и возвращает элемент из начала массива. Эта функция аналогична функции pop с тем только отличием, что работает от начала массива по принципу FIFO (<первым вошел, первым вышел>). Функция shift имеет следующий формат:
$value = shift(@ARRAY);
Следующий фрагмент программы иллюстрирует использование функции shift:
# Возьмём @list из предыдущего примера
print shift(@list); # Выведет 10 print shift(@list); # Выведет 20 # Теперь @list ()
Функция UNSHIFT
Функция unshift добавляет один или больше элементов к началу массива. Она имеет следующий код:
unshift(@Array, List);
Следующий фрагмент программы иллюстрирует использование функции unshift:
# @list = () unshift(@list,5,10,20); # @list (5,10,20) unshift(@list, 1..3); # @list (1,2,3,5,10,20)
Функция SPLICE
Скрипты языка Perl используют функцию splice для того, чтобы извлекать элементы из списка, заменяя их элементами другого списка. Она имеет следующий формат:
splice(@Array, Offset[, Count[, List]]);
Функция splice извлекает указанное число элементов {Count) из массива (@Аrraу), начиная с элемента, на который указывает величина сдвига (Offset), и заменяет элементы элементами другого списка (List). Если в вызове функции не указан параметр Count, функция извлекает элементы до самого конца массива. Если в вызове функции не указан список, элементами которого замещаются исходные элементы, то функция не добавляет никаких элементов к первоначальному списку. Следующее выражение иллюстрирует использование функции splice:
@list = 1..10; splice(@list,1,8,5,6); # @list = (1,5,6,10)
Функция SCALAR
Функция scalar определяет число элементов в списке. Она имеет следующий формат:
Rsult = scalar(List);
Обычно скрипты языка Perl не нуждаются в использовании функции scalar применительно к массивам, потому что когда скрипт обращается к массиву, записывая его в скалярном контексте, то он получает в качестве возвращаемой величины число элементов массива. Тем не менее, скрипты могут использовать функцию scalar вслучаях, когда контекст является неоднозначным или если список неявляется массивом. Следующее выражение иллюстрирует использование функции scalar.
@list = 1..10; print scalar(@list); # Выведет размер @list
Функция GREP
Функция grep фильтрует элементы списка, для которых заданное выражение принимает значение <ложно>. Она имеет следующийформат:
@list = grep(Expression, List);
Функция grep просматривает элементы списка, подставляя их вкачестве аргумента в заданное выражение. Функция grep присваивает текущее выражение элемента списка переменной $_ и вычисляет заданное выражение. Если полученное выражение является истинным,то функция grep добавляет этот элемент к результирующему списку. Следующий фрагмент программы иллюстрирует использование функции grep:
@list = grep($_ & 1, 1..10); # @list (1,3,5,7,9) @list = ("a", "" "b"); # @list ("a"," ","b") @list = grep($_ eq "", @list); # @list ("a","b")
Примечание: Если выражение, модифицирует переменную. $_, то исходный список также будет модифицирован.
8 8 8
| |