Tableaux de valeurs


Un type de variable nettement plus interressant est le tableau de valeur : c'est en fait une iste de valeur (i.e. des nombres et des chaînes de caractères). Les tableaux de valeurs on le meme format que les variables scalaires, au détail près qu'ils sont préfixés par le symbole @. Les instructions suivantes :

@fruits  = ("pommes", "poires", "cerises");
@musique = ("pipo", "violon");
 

affectent une liste de trois éléments à la variable tableau @fruits, et une liste de deux éléments à la variable tableau @musique.

On accède aux éléments d'un tableau en utilisant des indices entre crochets. Les indices commencent à 0. L'expression suivante :

$fruits[2]
 

renvoie "cerises". On notera que l'@ est devenu un $, étant doné que "cerises" est un scalaire.


Affectation des tableaux

Comme toujours en Perl, la même instruction peut produire different effet, suivant son environnement.La première instruction ci-dessous extrait les éléments de @musique : elle est identique à la seconde expression.

@plus_de_musique = ("orgue", @musique, "harpe");
@plus_de_musique = ("orgue", "pipo", "violon", "harpe");
 

Ceci suggère un mode d'addition des éléments à un tableau. Le moyen le plus propre pour ajouter un élément à un tableau est d'utiliser l'expression :

push(@fruit, "fraise");
 

qui va pousser fraise à la fin du tableau @fruits.Pour pousser deux éléments ou plus, on peut utiliser les formes suivantes :

push(@fruit, "fraise", "groseille");
push(@fruit, ("fraise", "groseille"));
push(@fruit, @plus_de_fruit);
 

La commande push renvoie la longueur de la nouvelle liste.

Pour enlever le dernier élément d'une liste, et le renvoyer, il faut utiliser la fonction pop. A partir de notre tableau original, la fonction pop renvoie cerise et @fruits n'as plus que deux éléments.

$panier = pop(@food);	# on a $panier = "cerises"
 

Il est aussi possible d'assigner un tableau à une variable scalaire. Un tel context est primordial. La ligne

$f = @fruit;
 

affecte le nombre d'éléments de @fruit, mais

$f = "@fruit";
 

transforme la liste en une chaine de caractère, un espace séparant chaque élément. Cet espace peut être remplacé par n'importe quelle valeur, simplement en modifiant le contenu de la variable reservée $" . Cette variable est une des nombreuses variables reservées du Perl : elles portent souvent des noms bizarres.

Les tableaux peuvent aussi etre utilisé pour faire des affectation multiples vers des variables.

($a, $b) = ($c, $d);		# identique à  $a=$c; $b=$d;
($a, $b) = @fruit;		# $a et $b sont les deux premiers éléments de @fruit
($a, @des_fruits) = @fruits;	# $a est le premier élément de @fruits
                    # @des_fruits est une liste d'autre fruits
(@des_fruits, $a) = @fruits;	# @des_fruits vaut @fruit et $a est undéfini.
 

La dernière affectation s'opère, car les tableaux sont des éléments gourmand, et @des_fruits va avaler tout ce qu'il peut de @fruits. Par conséquent, il vaut mieux éviter d'utiliser cete formulation.

Enfin, voux pouvez obtenir l'index du dernier éléments du tableau @fruits, grâce à :

$#fruits
 


Affichage des tableaux

Etant donné que le contexte est primordial, il ne serait pas étonnant que les expressions suivantes produisent des effets différents :

print @fruits;	# lui même
print "@fruits";	# Orné de "
print @fruits."";	# Contexte scalaire
 


Exercice

Essayer les différentes expressions ci-dessus pour voir ce qu'elles produisent comme effet.


Precedent Start Suivant