Comment passer un tableau en Perl

De la tâche. Dans le code Perl programme, il ya un tableau de @arr (les trois premières lettres du mot "array"). Dans ce tableau ont des valeurs. Vous devez passer par tous les éléments du tableau et effectuer les actions que chaque élément.

Parcourir un tableau à l'aide de foreach

La méthode recommandée pour résoudre ce problème est d'utiliser foreach. Voici un exemple de programme:

▶ Run
#!/usr/bin/perl

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

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

C'est très simple. Il ya un tableau. Ensuite, nous créons une variable $el (abréviation du mot element). Le cycle de foreach place dans cette variable, le premier élément d'un tableau (dans notre exemple, c'est le nombre 1). Fait le corps de la boucle warn $el; — cette affiche la valeur sur l'écran. Le cycle de foreach met dans une variable $el la valeur suivante de la matrice, encore une fois fait le corps de la boucle. Cette opération est répétée jusqu'à ce que le corps de la boucle n'est pas exécutée pour tous les éléments du tableau.

Parcourir un tableau à l'aide d'une boucle for

Voici un exemple de programme, comme marcher sur Perl tableau à l'aide d'une boucle semblable à boucle en langage c:

▶ Run
#!/usr/bin/perl

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

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

Ce qui se passe ici. Il ya un tableau de @arr. Plus loin, nous avons créé une nouvelle variable $i et a reçu de lui la valeur 0 (0 est l'indice le premier élément de Perl tableau). Plus loin se fait le corps de la boucle warn $arr[$i];. Après cette variable $i à l'aide de l'opérateur ++ augmente de un. Après cela, vous effectuez la vérification des conditions $i < @arr. Si la condition restitue la vérité, alors tout se répète.

Cette solution est un peu plus compliqué que la solution à l'aide de foreach. Besoin de travailler en douceur avec les valeurs limites. Si mal écrire la vérification, vous pouvez passer à la dernière valeur ou demander à un élément pour le dernier élément du tableau (ce traitement renverra undef).

Voici un exemple de programme qui exécute le même le même, mais utilise une autre condition for:

▶ Run
#!/usr/bin/perl

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

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

for tableau a du sens d'utiliser si vous l'avez dans le corps de la boucle ne doit pas seulement à la valeur de l'élément, mais aussi à sa chambre. Mais dans ce cas, vous pouvez utiliser foreach cycle manuellement en affichant la valeur de la variable avec l'index:

▶ Run
#!/usr/bin/perl

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

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

Une telle option la plus facile est perçue et il est moins sujet à des bahamas à une contrainte de valeur. Mais il est plus facile de dire la même chose avec each.

Parcourir le tableau à l'aide de while et each

Le mot-clé each est utilisé très souvent, mais presque toujours quand il est utilisé il est utilisé pour le travail avec хешом. En elle, mais each vous pouvez utiliser pour parcourir le tableau, tout en recevant de l'élément et l'élément lui-même. Voici à quoi ressemble le le code précédent, écrit avec l'aide de la each:

▶ Run
#!/usr/bin/perl

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

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

each il est devenu possible de l'appliquer à des tableaux à partir de la version de Perl 5.12. Si vous exécutez ce code sur plus début de la version de Perl, ce serait une erreur:

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.

Thèmes connexes

Autres articles