Tracks
/
Perl
Perl
/
Temario
/
Arrays y listas
Ar

Arrays y listas en Perl

1 ejercicio

Acerca de Arrays y listas

Los arrays y las listas contienen una colección ordenada de escalares. Salvo cuando usas referencias (que se verán en un concepto aparte), esto significa que los arrays y las listas siempre son planos, es decir, no pueden contener otros arrays ni otras listas.

En la mayoría de los casos, las listas van entre paréntesis () y sus elementos se separan con comas ,.

Una variable de array normalmente se llena asignándole una lista, por ejemplo, my @names = ('Alice', 'Bob', 'Charlie');.

Puedes acceder a los elementos de un array o una lista especificando índices mediante un subíndice, por ejemplo, ('Alice', 'Bob', 'Charlie')[1] # 'Bob'.

Los índices en Perl empiezan en 0. Los índices negativos cuentan desde el final del array o la lista, por ejemplo, ('Alice', 'Bob', 'Charlie')[-1] # 'Charlie'.

Funciones

Hay muchas funciones implementadas para operar con arrays y listas. Algunas de las más útiles son grep para obtener una nueva lista con los elementos filtrados que cumplen una condición, map para transformar los elementos en una nueva lista de valores, y sort para obtener una nueva lista con los elementos reordenados.

Entre las funciones para manipular arrays están push para agregar elementos al final, pop para quitar el último elemento, shift para quitar el primer elemento, unshift para agregar elementos al principio, y splice para modificaciones más complejas.

Recorrer arrays y listas con una sentencia for(each) también es algo que verás con frecuencia.

Variación de sigilos

Cuando accedes a los elementos de un array, el sigilo que uses determina el resultado. El subíndice [] al final del nombre de la variable es lo que le indica a Perl que estás accediendo a un array con ese nombre.

my @names = ('Alice', 'Bob', 'Charlie');

$names[0]; # 'Alice'      <- A scalar
@names[0]; # ('Alice')    <- A slice (with only one index, this probably isn't what you want. There will be a warning.)
%names[0]; # (0, 'Alice') <- A key/index + value slice

$names[1, 2]; # 'Charlie'                <- A scalar (via unsupported syntax for an ancient feature. Probably not what you want. There will be a warning.)
@names[1, 2]; # ('Bob', 'Charlie')       <- A slice
%names[1, 2]; # (1, 'Bob', 2, 'Charlie') <- A key/index + value slice

Aunque está permitido, se recomienda que distintos tipos de variables no compartan el mismo nombre, por claridad.

Arrays y listas

Los arrays y las listas comparten muchas similitudes y en muchos lugares se pueden usar de forma intercambiable, pero no son lo mismo. Una lista es una colección fija e inmutable de escalares. Un array es una colección variable de escalares en la que tanto el contenido como el tamaño del propio array pueden cambiar.

Tienen comportamientos distintos en algunos contextos. Un array usado en contexto escalar te da el tamaño del array. Una lista usada en contexto escalar te da el último elemento de la lista y, posiblemente, algunas advertencias sobre el resto de su contenido, que se estaría usando en contexto vacío.

my @names = ('Alice', 'Bob', 'Charlie');

scalar @names; # 3
scalar ('Alice', 'Bob', 'Charlie'); # 'Charlie' (and some warnings).

Lee más en las siguientes preguntas frecuentes: ¿Cuál es la diferencia entre una lista y un array?

Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Arrays y listas

La práctica está bloqueada

Desbloquea 10 ejercicios más para practicar Arrays y listas