Como saber el número de elementos en la matriz de Perl

La tarea. En el código de Perl programa cuenta con una matriz de @arr (las tres primeras letras de la palabra "array"). En esta matriz tiene ningún valor. Necesita saber cuánto en esta matriz contiene elementos.

Hay varias maneras de resolver el problema.

Utilizar escalar de contexto

Si utilizar una matriz en скалярном el contexto, es el valor de la cantidad de elementos de la matriz:

my $number_of_elements = scalar(@arr);

Programa de ejemplo:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print scalar(@arr);

El programa mostrará el número 3.

Escalar el contexto no sólo se puede obtener con la ayuda de scalar(), pero con la ayuda de alguna operación aritmética, que no cambia el número, por ejemplo, añadir/quitar cero o multiplicar/dividir por unidad:

my $number1 = @arr + 0;
my $number2 = @arr - 0;
my $number3 = @arr * 1;
my $number4 = @arr / 1;

Utilizar una variable con el índice del último elemento

Otra forma de averiguar la longitud de la matriz es utilizar una variable que está relacionada con ese conjunto y que contiene el número del último elemento. Si la matriz se llama @arr, esta variable se llamará $#arr. El primer elemento en el Perl de la matriz es el número 0, de modo que para obtener el número de elementos que necesita a esta variable añadir 1.

my $number_of_elements = $#arr + 1;

Como se consideran los diferentes elementos y undef

No importa cuáles son los valores contenidos en la matriz. Allí pueden ser simples cadenas y números, y estructuras complejas.

Si la matriz contiene el valor de la undef, ellos también son considerados. He aquí un ejemplo de la matriz en que se encuentran los 4 elementos:

my @arr = (1, undef, 3, undef);

Es incorrecto método de cálculo — utilizar length()

He aquí un ejemplo de un programa. El programa muestra en pantalla el número 1 y se puede incorrecto suponer que length() aplicado a una matriz, devuelve el número de elementos en el mismo.

▶ Run
#!/usr/bin/perl

my @arr = ('one');

print length(@arr);

Pero esto es una suposición incorrecta. Para verificar esto, se puede comprobar que para la matriz my @arr = ('one', 'two', 'three') length()de la misma devolverá 1.

length() aplicada a una matriz, devuelve la cantidad de elementos y el número de dígitos en el número de elementos. Si la matriz contiene 9 o menos elementos, length(@arr) devolverá un 1 si la matriz contiene de 10 a 99 elementos, length(@arr) devolverá el 2, y así sucesivamente.

Temas relacionados

Otros articulos