En plus de permettre un accès direct à chaque élément d'un tableau, Perl fournit également diverses autres façons intéressantes afin de manipuler des tableaux. En particulier, il y a des fonctions qui permettent d'utiliser très facilement et efficacement un tableau Perl comme une pile ou une file d'attente.

La fonction prédéfinie pop

La fonction pop enlève et retourne le dernier élément d'un tableau.

my @noms = ('Foo', 'Bar', 'Baz');
my $dernier = pop @noms;

print "$dernier\n";  # Baz
print "@noms\n";     # Foo Bar

Dans ce premier exemple, vous pouvez voir comment, étant donné un tableau de trois éléments, la fonction pop enlève le dernier élément (celui avec l'indice le plus élevé) de ce tableau et le renvoie.

Dans le cas particulier d'un tableau donné vide, la fonction pop retourne undef (EN).

La fonction prédéfinie push

La fonction push peut ajouter une ou plusieurs valeurs à la fin d'un tableau (En fait, il peut également ajouter zéro valeur, mais ce n'est pas très utile, n'est-ce pas?).

my @noms = ('Foo', 'Bar');
push @noms, 'Moo';
print "@noms\n";     # Foo Bar Moo

my @autres = ('Darth', 'Vader');
push @noms, @autres;
print "@noms\n";     # Foo Bar Moo Darth Vader

Dans cet exemple, au départ, le tableau a deux éléments.

Lors du premier appel à push, nous avons ajouté une valeur scalaire unique à la fin du tableau @noms. Ainsi, ce tableau a gagné un élément, ayant donc trois éléments au total.

Lors du deuxième appel à push, nous avons ajouté les valeurs contenues dans le tableau @autres à la fin du tableau @noms. Ainsi, ce tableau a gagné deux éléments, ayant donc cinq éléments au total.

La fonction prédéfinie shift

La fonction shift déplace l'ensemble des éléments d'un tableau vers la gauche, en supposant que vous imaginez le tableau commencer par la gauche. Le premier élément du tableau est enlevé et devient la valeur de retour de la fonction.

Après l'opération, le tableau a un élément de moins. Elle est assez similaire à pop, mais elle fonctionne au début du tableau.

my @noms = ('Foo', 'Bar', 'Moo');
my $premier = shift @noms;
print "$premier\n";  # Foo
print "@noms\n";     # Bar Moo

Dans le cas particulier d'un tableau donné vide, la fonction shift retourne undef (EN).

La fonction prédéfinie unshift

La fonction unshift est la fonction inverse de la fonction shift. unshift aura une ou plusieurs valeurs (ou zéro si c'est ce que vous voulez) qui sera (seront) placée(s) au début du tableau en déplaçant tous les autres éléments vers la droite.

my @noms = ('Foo', 'Bar');
unshift @noms, 'Moo';
print "@noms\n"; # Moo Foo Bar 

my @autres = ('Darth', 'Vader');
unshift @noms, @autres;
print "@noms\n"; # Darth Vader Moo Foo Bar

Suivant l'exemple ci-dessus, vous pouvez appeler cette fonction avec en premier argument un tableau (@noms ) suivi par :

  • soit une seule valeur scalaire ('Moo') qui devient alors le premier élément du tableau
  • soit un deuxième tableau (@autres) dont les éléments seront copiés au début du premier tableau dont les autres éléments seront déplacés vers des indices plus élevés