Parcours
/
Perl
Perl
/
Programme
/
Tableaux et listes
Ta

Tableaux et listes en Perl

1 exercice

À propos de Tableaux et listes

Les tableaux et les listes contiennent une collection ordonnée de scalaires. À moins d'utiliser des références (ce qui sera abordé dans un concept séparé), cela signifie que les tableaux et les listes sont toujours à plat, c'est-à-dire qu'ils ne peuvent pas contenir d'autres tableaux ou listes.

Dans la plupart des cas, les listes sont entourées de parenthèses () et leurs éléments sont séparés par des virgules ,.

On remplit généralement une variable de tableau en lui affectant une liste, par exemple my @names = ('Alice', 'Bob', 'Charlie');.

On peut accéder aux éléments d'un tableau ou d'une liste en précisant les indices souhaités entre crochets, par exemple ('Alice', 'Bob', 'Charlie')[1] # 'Bob'.

Les indices en Perl commencent à 0. Les indices négatifs sont comptés à partir de la fin du tableau ou de la liste, par exemple ('Alice', 'Bob', 'Charlie')[-1] # 'Charlie'.

Fonctions

De nombreuses fonctions permettent de manipuler les tableaux et les listes ; parmi les plus utiles, on trouve grep pour obtenir une nouvelle liste d'éléments filtrés qui correspondent à une condition, map pour transformer les éléments en une nouvelle liste de valeurs, et sort pour une nouvelle liste d'éléments réordonnés.

Les fonctions de manipulation des tableaux incluent push pour ajouter des éléments à la fin, pop pour supprimer le dernier élément, shift pour supprimer le premier élément, unshift pour ajouter des éléments au début, et splice pour des modifications plus complexes.

Tu rencontreras aussi très souvent l'itération sur les tableaux et les listes avec une instruction for(each).

Variation de sigil

Lorsqu'on accède aux éléments d'un tableau, c'est le sigil utilisé qui détermine le résultat. C'est l'indice [] placé à la fin du nom de la variable qui indique à Perl qu'on accède à un tableau portant ce nom.

my @names = ('Alice', 'Bob', 'Charlie');

$names[0]; # 'Alice'      <- A scalar
@names[0]; # ('Alice')    <- A slice (with only one index, this probably isn't what you want. There will be a warning.)
%names[0]; # (0, 'Alice') <- A key/index + value slice

$names[1, 2]; # 'Charlie'                <- A scalar (via unsupported syntax for an ancient feature. Probably not what you want. There will be a warning.)
@names[1, 2]; # ('Bob', 'Charlie')       <- A slice
%names[1, 2]; # (1, 'Bob', 2, 'Charlie') <- A key/index + value slice

Même si c'est autorisé, il est recommandé, pour la lisibilité, de ne pas donner le même nom à des variables de types différents.

Tableaux et listes

Les tableaux et les listes partagent de nombreuses similitudes et, dans bien des cas, peuvent être utilisés de façon interchangeable, mais ce ne sont pas la même chose. Une liste est une collection fixe et immuable de scalaires. Un tableau est une collection variable de scalaires, dont le contenu et la taille peuvent être modifiés.

Ils se comportent différemment dans certains contextes. Un tableau utilisé dans un contexte scalaire renvoie la taille du tableau. Une liste utilisée dans un contexte scalaire renvoie le dernier élément de la liste, et éventuellement quelques avertissements signalant que le reste de son contenu est utilisé dans un contexte vide.

my @names = ('Alice', 'Bob', 'Charlie');

scalar @names; # 3
scalar ('Alice', 'Bob', 'Charlie'); # 'Charlie' (and some warnings).

Pour en savoir plus, consulte la FAQ suivante : Quelle est la différence entre une liste et un tableau ?

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Tableaux et listes

L'entraînement est verrouillé

Déverrouille 10 exercices de plus pour t'entraîner sur Tableaux et listes