Cómo ponerse en contacto con un elemento de una matriz en Perl

La tarea. En Perl programa dispone de una matriz. Es necesario leer el valor de un elemento de esta matriz.

He aquí un ejemplo de cómo hacerlo:

▶ Run
#!/usr/bin/perl

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

print $arr[1];

Si guardar el texto de este programa en el archivo de script.pl y ejecutar perl script.pl, en la pantalla aparecerá el texto two.

Así, lo que pasa aquí.

Primero creamos un array con el nombre de @arr. La variable de la matriz comienza con el carácter @, este símbolo es similar a la de la primera la letra de la palabra "array". Hemos creado una matriz y colocado en él 3 elemento. En nuestro ejemplo, todos los 3 de un elemento es la de la cadena, pero, en general, en la misma matriz pueden ser elementos totalmente diferentes, como, por ejemplo, cadenas de caracteres, números y referencias.

Cada elemento de la matriz tiene su propio número de secuencia. Este número se denomina "índice". En el lenguaje de programación Perl, como en muchos otros lenguajes de programación de los elementos de la matriz comienzan a нумероваться con el número 0. En el ejemplo de la matriz de contiene 3 elementos:

  • la cadena de 'one' es un elemento de la matriz con el índice de 0
  • la cadena de 'two' es un elemento de la matriz con el índice de 1
  • la cadena de 'three' es un elemento de la matriz con el índice de 2

Para consultar a un elemento de una matriz con un índice de 1 es necesario escribir $arr[1]. Escribimos el nombre de la matriz y en cuadrados entre paréntesis escribimos el índice del elemento que necesitamos conseguir. Tenga en cuenta una particularidad. Cuando nos referimos al mismo elemento de la matriz, en lugar de un carácter @ en el nombre de la matriz, es necesario escribir el símbolo de $ (el símbolo del dólar, símbolo similar al primer la letra de la palabra "scalar"). La idea era que cuando se cuenta de manera explícita la hacemos hincapié en que tenemos que tener un valor, pero, en mi opinión, es un error en el diseño de de la lengua. No es nada simplificado, y por el contrario ha hecho cada vez más difícil. En el lenguaje de programación Perl6 es fijo, pero en Perl5 cuando se accede a un elemento de la matriz con el signo de dólar $: $arr[1].

Solicitar al último elemento de la matriz

Cuando se crea una matriz @arr aparece automáticamente la variable $#arr que contiene el índice del último elemento. Al agregar/quitar elementos de la matriz de valores de esta variable cambia automáticamente (e incluso se puede más escribir el número en esta variable).

Para acceder al último elemento de la matriz se puede utilizar la entrada de $arr[$#arr]. Pero es conveniente utilizar $arr[-1]. El índice de -1 significa el índice del último elemento de la matriz, el índice de -2 — el penúltimo, etc.

La forma incorrecta

He aquí un ejemplo de código (con cuidado, aquí hay un error):

▶ Run
#!/usr/bin/perl

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

print @arr[1]; # error

Esta variante de la misma forma correcta, pero en su lugar correcto tratamiento de un elemento de una matriz con la ayuda de $arr[1]aquí se utiliza @arr[1].

Si guardar el texto de este programa en el archivo de script.pl , y para hacerlo perl script.pl, en la pantalla aparecerá el texto two. La cadena de 'two', es realmente el elemento con el índice 1 en la matriz de @arr, por lo que, a primera vista, los errores no se ve.

Pero si añadimos en el código de programa de la cadena de use warnings; (que casi siempre vale la pena hacerlo), entonces en la salida del programa será se ve advertencia:

Scalar value @arr[1] better written as $arr[1] at script.pl line 7.
two

Formulario de registro @arr[ ] es obtener varios valores de la matriz. Esto se conoce como "corte". Algunos ejemplos:

  • @arr[1,2] — devuelve una lista de dos elementos, los elementos de la matriz de índices 1 y 2
  • @arr[0..2] — devuelve una lista de tres elementos, los elementos de la matriz con índices 0, 1 y 2
  • @arr[1, 1] — devuelve una lista de dos elementos, se repite el elemento con el índice 1, dos veces

La entrada @arr[1] — devuelve una lista de un miembro, además de un mensaje de alerta.

La entrada @arr[1,] — devuelve una lista de un elemento sin la advertencia.

Si usted necesita el valor de un elemento de la matriz, lo mejor es escribir $arr[1].

Temas relacionados

Otros articulos