Функция push. Добавление новых элементов в конец массива
|
1 |
push ARRAY, LIST |
Функция добавляет в конец массива ARRAY один или несколько новых элементов. Возвращает новое число элементов в массиве.
Пример:
|
1 2 3 4 5 6 |
my @array = ('Alisa', 'Arina', 'Lisa'); push @array, 'Maria', 'Arline'; my @array2 = ('Triniti','Nina'); push @array, @array2; |
Функция pop. Удаление последнего элемента массива
|
1 |
pop ARRAY |
Функция pop возвращает и удаляет последний элемент массива. Если в массиве нет элементов, функция вернет undef.
Пример:
|
1 2 3 4 5 |
my @array = ('Alisa', 'Arina', 'Lisa'); pop @array; print join(' ', @array)."\n"; # вывод: Alisa Arina |
Функция unshift. Добавление новых элементов в начало массива
|
1 |
unshift ARRAY, LIST |
Функция добавляет новые элементы в начало массива и возвращает новое число элементов в массиве.
Пример:
|
1 2 3 4 5 6 |
my @array = ('Alisa', 'Arina', 'Lisa'); my $num = unshift @array, 'Samanta'; print join(' ', @array)."\n"; # вывод: Samanta Alisa Arina Lisa print $num."\n"; # вывод: 4 |
Функция shift. Удаление первого элемента массива
|
1 |
shift ARRAY |
Функция возвращает и удаляет первый элемент массива. Элемент удаляется полностью, остальные элементы «смещаются» ближе к началу массива.
Пример:
|
1 2 3 4 5 6 7 |
my @array = ('Alisa', 'Arina', 'Lisa'); my $name = shift @array; print join(' ', @array)."\n"; # вывод: Arina Lisa print $name."\n"; # вывод: Alisa |
Если shift вызывается без явного указания массива, то будет прочитан, возвращен и удален первый элемент массива @_. Именно это свойство используется при передаче значений подпрограммам.
|
1 2 3 4 5 6 7 |
check_params($name, \%adress_params); sub check_params { $name = shift; $adress_params = shift; ... } |
Функция splice
|
1 |
splice ARRAY, OFFSET, LENGHT, LIST |
OFFSET, LENGHT, LIST — необязательные параметры. Удаляет заданное количество (LENGHT) элементов из массива, начиная с элемента OFFSET, и заменяет их новыми элементами (LIST).
OFFSET может иметь отрицательное значение. В этом случае, счет элементов идет с конца массива.
Если LENGHT не задана — функция удалит все элементы, начиная с элемента OFFSET и до конца массива.
Фактически, может легко реализовать функциональность shift, unshift, pop и push. Но для чтения и понимания кода — функция не удобна.
|
1 2 3 4 5 6 7 |
my @array = ('Alisa', 'Arina', 'Lisa'); splice(@array, 1, 0, 'Erika'); print join(' ', @array)."\n"; # вывод: Alisa Erika Arina Lisa splice(@array); # удалит все элементы массива |
В списковом контексте функция возвращает элементы, удаленные из массива. В скалярном контексте — число удаленных элементов.
Начиная с 10ой версии perl, можно использовать оператор ~~ . Оператор, начиная с первого элемента и по порядку, обходит массив и останавливается, как только будет найден первый подходящий элемент.
if ( $item ~~ @array ) {
print «Ok»;
}
Либо, можно использовать grep, для поиска вхождения нужного элемента в массив:
if (my $found = grep $_ eq $item, @array) {
print «Ok»;
}