Comment accéder à un élément d'un tableau en Perl

De la tâche. En Perl programme d'un tableau. Besoin de lire la valeur d'un élément de ce tableau.

Voici un exemple de comment le faire:

▶ Run
#!/usr/bin/perl

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

print $arr[1];

Si vous enregistrez le texte de ce programme dans un fichier script.pl et exécuter perl script.pl, apparaîtront sur l'écran de texte two.

Donc, ce qui se passe ici.

Tout d'abord, nous avons créé un tableau avec le nom @arr. La variable-tableau commence par @, ce symbole semblable à la première la lettre du mot "array". Nous avons créé un tableau et placé dans celui-3 de l'élément. Dans notre exemple, toutes les 3 éléments est les lignes, mais en général dans un seul tableau peuvent être des éléments de différents types, par exemple, des chaînes, des nombres et des liens.

Chaque élément d'un tableau a son numéro de série. Ce numéro est appelé "indice". Dans un langage de programmation Perl, comme dans de nombreux autres langages de programmation, les éléments d'un tableau commencent à être numérotés avec des nombres de 0. Dans l'exemple dans le tableau contient 3 éléments:

  • la chaîne de 'one' est un élément d'un tableau avec un indice de 0
  • la chaîne de 'two' est un élément d'un tableau avec un indice de 1
  • la chaîne de 'three' est un élément d'un tableau avec un indice de 2

Pour s'adresser à un élément d'un tableau avec un indice de 1 besoin d'écrire $arr[1]. Écrivons le nom du tableau et dans le carré entre parenthèses écrivons l'index de l'élément que nous devons obtenir. Veuillez noter une particularité. Lorsque nous nous adressons à un élément d'un tableau, alors au lieu de caractère @ dans le nom d'un tableau vous devez écrire le symbole $ (le signe du dollar, symbole semblable à la première la lettre dans le mot "scalar"). L'idée était que avec un tel record, nous soulignons que nous avons besoin d'obtenir une seule valeur, mais, à mon avis, c'est une erreur dans la conception de la langue. Cela n'a rien simplifié, mais au contraire le fait de plus en plus difficile. Dans un langage de programmation Perl6 c'est corrigé, mais dans Perl5 lors de l'accès à un élément d'un tableau vous devez utiliser le signe dollar $: $arr[1].

Dernier élément du tableau

Lors de la création d'un tableau @arr apparaît automatiquement à la variable $#arr qui contient l'index du dernier élément. Lors de l'ajout/suppression d'éléments du tableau de valeurs de cette variable est automatiquement modifiée (et même peut être plus écrire le nombre dans cette variable).

Pour accéder au dernier élément d'un tableau, vous pouvez utiliser l'entrée de $arr[$#arr]. Mais il est plus facile utiliser $arr[-1]. L'indice de -1 signifie l'index du dernier élément dans le tableau, l'indice -2 — l'avant-dernier, etc.

La mauvaise façon

Voici un exemple de code (doucement, il y a une erreur):

▶ Run
#!/usr/bin/perl

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

print @arr[1]; # error

Cette option est exactement la même que la bonne, mais au lieu d'un bon accès à l'élément du tableau à l'aide de la $arr[1]ici utilisé @arr[1].

Si vous enregistrez le texte de ce programme dans un fichier script.pl et de l'exécuter perl script.pl, l'écran sera le texte two. La chaîne de 'two', c'est vraiment un élément avec un indice de 1 dans le tableau @arr, de sorte qu'à première vue, l'erreur n'est pas visible.

Mais si l'ajout dans le code de programme de la chaîne use warnings; (ce qui est pratiquement toujours la peine de le faire), alors que dans le retrait programme sera vu l'avertissement:

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

Formulaire d'enregistrement de la @arr[ ] — c'est l'obtention de plusieurs valeurs de la matrice. Il a appelé une "tranche". Quelques exemples:

  • @arr[1,2] — retourne une liste de deux éléments, les éléments d'un tableau avec des indices 1 et 2
  • @arr[0..2] — retourne une liste de trois éléments, les éléments d'un tableau avec des indices 0, 1 et 2
  • @arr[1, 1] — retourne une liste de deux éléments, répéter un élément à un indice de 1 à deux fois

L'enregistrement @arr[1] — retourne une liste à partir d'un élément, plus donne un avertissement.

L'enregistrement @arr[1,] — retourne une liste à partir d'un élément sans avertissement.

Si vous avez besoin de la valeur d'un élément de tableau, il est préférable d'écrire $arr[1].

Thèmes connexes

Autres articles