Dans cet article du tutoriel Perl, nous allons en apprendre davantage sur les tableaux en Perl. Ceci est un aperçu de la façon dont fonctionnent les tableaux en Perl. Nous donnerons des explications plus détaillées dans de futurs articles.

Les noms de variables des tableaux en Perl sont préfixés par le symbole @ appelé dans le jargon Perl un sigil. (mnémonique : @ représente le premier a de array).

Comme nous encourageons systématiquement l'utilisation de strict, vous devez déclarer ces variables en utilisant le mot-clé my avant la première assignation.

Rappelez-vous ! Tous les exemples ci-dessous supposent que votre fichier commence par :

use strict;
use warnings;
use 5.010;

Initialisation d'un tableau Perl

Déclarer un tableau tout simplement :

my @noms;

Déclarer un tableau tout en lui assignant des valeurs :

my @noms = ("Foo", "Bar", "Baz");

Débogage d'un tableau Perl

use Data::Dumper qw(Dumper);

my @noms = ("Foo", "Bar", "Baz");

say Dumper \@noms;

Le résultat est le suivant :

$VAR1 = [
    'Foo',
    'Bar',
    'Baz'
];

Le mot-clé foreach pour parcourir un tableau Perl

my @noms = ("Foo", "Bar", "Baz");
foreach my $n (@noms) {
  say $n;
}

Le résultat est le suivant :

Foo
Bar
Baz

Accéder à un des éléments d'un tableau Perl

my @noms = ("Foo", "Bar", "Baz");
say $noms[0];

Attention ! Lorsque vous accédez à un seul élément d'un tableau, le sigil change de @ à $. Cela pourrait causer de la confusion pour certaines personnes, mais si vous y réfléchissez deux minutes, il est assez facile de comprendre pourquoi.

@ marque le pluriel et $ le singulier. Lorsque vous accédez à un seul élément d'un tableau, celui-ci se comporte comme une variable scalaire normale.

Les indices dans un tableau Perl

Les indices d'un tableau commencent à partir de 0. Le plus grand indice est toujours dans la variable notée <$#nom_du_tableau>.

my @noms = ("Foo", "Bar", "Baz");
say $#noms;

Le résultat est le suivant :

2

car les indices sont 0, 1 et 2.

Longueur ou taille d'un tableau Perl

En Perl il n'ya pas de fonction spéciale pour aller chercher la taille d'un tableau, mais il y a plusieurs façons d'obtenir cette valeur.

D'une part, la taille d'un tableau est le plus grand indice augmenté de 1. Dans l'exemple ci-dessus, $#noms+1 est la taille ou la longueur du tableau.

D'autre part, la fonction prédéfinie scalar peut être utilisée pour obtenir la taille d'un tableau :

my @noms = ("Foo", "Bar", "Baz");
say scalar @noms;

Le résultat est le suivant :

3

La fonction fonction prédéfinie scalar est une sorte de fonction de conversion qui - entre autres choses - convertit un tableau en un scalaire. En raison d'une décision arbitraire, mais intelligente, cette conversion donne la taille du tableau.

Une boucle basée les indices d'un tableau

Il y a des cas où une boucle sur les valeurs d'un tableau n'est pas suffisant. Nous pourrions avoir besoin à la fois de la valeur et de l'indice de cette valeur. Dans ce cas, nous avons besoin de faire une boucle sur les indices, et nous obtenons les valeurs en utilisant les indices.

my @noms = ("Foo", "Bar", "Baz");
foreach my $i (0 .. $#noms) {
  say "$i - $noms[$i]";
}

Le résultat est le suivant :

0 - Foo
1 - Bar
2 - Baz

La fonction prédéfinie push appliquée sur un tableau Perl

La fonction prédéfinie push ajoute une nouvelle valeur à la fin du tableau qui donc grandit.

my @noms = ("Foo", "Bar", "Baz");

push @noms, 'Moo';
say Dumper \@names;

Le résultat est le suivant :

$VAR1 = [
    'Foo',
    'Bar',
    'Baz',
    'Moo'
];

La fonction prédéfinie pop appliquée sur un tableau Perl

La fonction prédéfinie pop récupère le dernier élément du tableau.

my @noms = ("Foo", "Bar", "Baz");
my $dernier_element = pop @noms;

say "Dernier élément : $dernier_element";
say Dumper \@noms;

Le résultat est le suivant :

Last: Baz
$VAR1 = [
    'Foo',
    'Bar',
];

La fonction prédéfinie shift appliquée sur un tableau Perl

La fonction prédéfinie shift :

  • retourne l'élément le plus à gauche d'un tableau (càd le premier élément)
  • et déplace tous les autres éléments vers la gauche

my @noms = ("Foo", "Bar", "Baz");
my $element_le_plus_a_gauche = shift @noms;

say "Premier élément : $element_le_plus_a_gauche";
say Dumper \@noms;

Le résultat est le suivant :

Premier élément : Foo
$VAR1 = [
    'Bar',
    'Baz',
];