Perl proporciona las funciones push, pop, shift
y unshift
que permiten trabajar el array o lista como si de una pila o cola se tratase.
La función push tiene la sintáxis:
push(ARRAY,LIST)
empuja el valor de LIST en el ARRAY. La longitud del ARRAY se incrementa en la longitud de
LIST. Es lo mismo que hacer:
for $value (LIST) {
$ARRAY[++$#ARRAY] = $value;
}
La función pop tiene la sintáxis:
pop(ARRAY) pop ARRAY
pop ARRAY tiene el mismo efecto que:
$tmp = $ARRAY[$#ARRAY]; $#ARRAY--
Si no hay elementos en ARRAY, devuelve el valor undef.
Las funciones shift y unshift actuán de manera similar a
push y pop pero utilizando el comienzo de la lista en vez del final
de la misma.
Las funciones push, pop, shift y unshift
son un caso particular de la función splice , la cual cambia
los elementos de un ARRAY. La función splice toma 4 argumentos:
el ARRAY a modificar, el ındice OFFSET en el cual es modificado,
el número de elementos a suprimir LENGTH y la lista de elementos extra a insertar.
splice(ARRAY,OFFSET,LENGTH,LIST) splice(ARRAY,OFFSET,LENGTH) splice(ARRAY,OFFSET)
La función splice devuelve los elementos suprimidos del ARRAY.
Si se omite LENGTH se suprime todo desde OFFSET
hacia adelante. Se cumplen las siguientes equivalencias
push(@a,$x) splice(@a,$#a+1,0,$x)
pop(@a) splice(@a,-1)
shift(@a) splice(@a,0,1)
unshift(@a,$x) splice(@a,0,0,$x)
$a[$x] = $y splice(@a,$x,1,$y);
No se puede acortar un array asignando undef a sus elementos del final.
Para acortarlo se debe asignar $#a o utilizar un operador como pop
ó splice.
@a = 1 .. 10;
$a[9] = undef; # @a = (1 ..9, undef)
$x = pop @a; # @a = (1 ..9)
splice @a, -2; # @a = (1 ..7) OFFSET = -2. Como se ha suprimido
# LENGTH, se suprime desde el penúltimo elemento
# hacia adelante
$#a = 4; # @a = (1 ..5)
Casiano Rodríguez León
