Como pasar de la matriz en 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. Es necesario ir a por todos los elementos de una matriz y realizar alguna acción con cada elemento.

De recorrer un array con foreach

El método recomendado para la solución de este problema es utilizar foreach. He aquí un ejemplo de programa:

▶ Run
#!/usr/bin/perl

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

foreach my $el (@arr) {
    warn $el;
}

Aquí todo es muy sencillo. Hay una matriz. Más allá creamos la variable $el (abreviatura de la palabra element). El ciclo de foreach coloca en esta variable el primer elemento de la matriz (en nuestro ejemplo, el número 1). Se ejecuta el cuerpo del bucle warn $el; es una muestra el valor en la pantalla. El ciclo de foreach coloca en la variable $el el siguiente valor de la matriz, de nuevo, se ejecuta el cuerpo del bucle. Esto se repite hasta que el cuerpo del bucle no se cumple para todos los elementos de la matriz.

De recorrer un array con el ciclo for

Este es el programa de ejemplo de cómo caminar por el Perl de la matriz con el ciclo similar al de un ciclo en el lenguaje c:

▶ Run
#!/usr/bin/perl

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

for (my $i = 0; $i < @arr; $i++) {
    warn $arr[$i];
}

Lo que pasa aquí. Hay una matriz de @arr. Más allá, hemos creado una nueva variable $i y se apropió de ella un valor de 0 (0 es el índice el primer elemento en el Perl de la matriz). Más allá se ejecuta el cuerpo del bucle warn $arr[$i];. Después de esta variable $i con la ayuda de operador de ++ aumenta en uno. Después de esto, se realiza una comprobación de las condiciones de $i < @arr. Si la condición ha devuelto la verdad, entonces todo se repite.

Esta solución es un poco más complicado que resolver con la ayuda de foreach. Es necesario el trabajo con cuidado con los valores límite. Si mal escribir comprobación, se puede omitir el último valor o acceder a un elemento por último elemento de la matriz (ese trato devolverá undef).

He aquí un ejemplo de un programa que funciona de la misma manera, pero se utiliza otra condición for:

▶ Run
#!/usr/bin/perl

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

for (my $i = 0; $i <= $#arr; $i++) {
    warn $arr[$i];
}

for la matriz tiene sentido si en el cuerpo del ciclo no sólo el valor de un elemento, sino de su habitación. Pero en este caso puede utilizar foreach ciclo manualmente, dejando al descubierto el valor de la variable con el índice:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);
my $i = 0;

foreach my $el (@arr) {
    warn "index: $i value: $el";
    $i++;
}

Esta opción es más fácil percibida por la persona y es menos susceptible a las bahamas con el límite del valor. Pero hay más de una buena oportunidad para decir lo mismo con each.

Recorrer la matriz mediante while y each

La palabra clave each se utiliza no es que muy a menudo, pero casi siempre cuando se utiliza, se utiliza para trabajar con хешом. Poco se sabe del final, pero each se puede utilizar para recorrer la matriz, al tiempo que el índice del elemento y el elemento en sí. Así es como se ve el código anterior, escrito con each:

▶ Run
#!/usr/bin/perl

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

while (my ($i, $el) = each @arr) {
    warn "index: $i value: $el";
}

each fue posible aplicar a matrices a partir de la versión de Perl 5.12. Cuando este código en más de una versión anterior de Perl, lo que se producirá un error:

Type of arg 1 to each must be hash (not private array) at script.pl line 5, near "@arr) "
Execution of script.pl aborted due to compilation errors.

Temas relacionados

Otros articulos