Встроенные функции Perl. Работа с массивами

Функция push. Добавление новых элементов в конец массива

Функция добавляет в конец массива ARRAY один или несколько новых элементов. Возвращает новое число элементов в массиве.

Пример:

 

Функция pop. Удаление последнего элемента массива

Функция pop возвращает и удаляет последний элемент массива. Если в массиве нет элементов, функция вернет undef.

Пример:

 

Функция unshift. Добавление новых элементов в начало массива

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

Пример:

 

Функция shift. Удаление первого элемента массива

Функция возвращает и удаляет первый элемент массива. Элемент удаляется полностью, остальные элементы "смещаются" ближе к началу массива.

Пример:

Если shift вызывается без явного указания массива, то будет прочитан, возвращен и удален первый элемент массива @_. Именно это свойство используется при передаче значений подпрограммам.

 

Функция splice

OFFSET, LENGHT, LIST - необязательные параметры. Удаляет заданное количество (LENGHT) элементов из массива, начиная с элемента OFFSET, и заменяет их новыми элементами (LIST).

OFFSET может иметь отрицательное значение. В этом случае, счет элементов идет с конца массива.

Если LENGHT не задана - функция удалит все элементы, начиная с элемента OFFSET и до конца массива.

Фактически, может легко реализовать функциональность shift, unshift, pop и push. Но для чтения и понимания кода - функция не удобна.

В списковом контексте функция возвращает элементы, удаленные из массива. В скалярном контексте - число удаленных элементов.

Встроенные функции Perl. Работа с массивами: 2 комментария

  1. Natalie Автор записи

    Начиная с 10ой версии perl, можно использовать оператор ~~ . Оператор, начиная с первого элемента и по порядку, обходит массив и останавливается, как только будет найден первый подходящий элемент.

    if ( $item ~~ @array ) {
    print "Ok";
    }

  2. Natalie Автор записи

    Либо, можно использовать grep, для поиска вхождения нужного элемента в массив:

    if (my $found = grep $_ eq $item, @array) {
    print "Ok";
    }

Комментарии запрещены.