1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #!/usr/bin/perl
use strict;
use warnings;
my $personnage = 'Zibouinbouin';
my $refperso = \$personnage;
my @chanteur = ('Carlos', 'Annie Cordy', 'Douchka');
my @arr = ( 'Toto',
\$personnage,
\@chanteur,
['Jean Lefevre', 'Henry Guibet', 'Jacques Ballutin']
); # les items 1, 2 et 3 sont des références
print "$personnage\n";
print "$refperso\n";
# Pour accéder au scalaire je déréférence avec le sigil $
print "$$refperso\n\n";
print "$arr[0]\n"; # l'item 0 est un scalaire, on obtient donc: "Toto"
print "$arr[1]\n"; # l'item 1 est une référence vers un scalaire: SCALAR(0x557c2...)
# Pour obtenir le scalaire lui-même, je déréférence avec le sigil $ et pour
# éviter les ambigüités j'utilise des accolades (car la précédence est telle
# que $$arr[1] est lue comme ${$arr}[1])
print "${$arr[1]}\n";
print "$arr[2]\n"; # l'item 2 est une référence vers un tableau: ARRAY(0x55d9...)
# si je veux le tableau, j'utilise le sigil @ pour déréférencer (toujours avec les accolades)
print join(";", @{$arr[2]}), "\n";
# si je veux maintenant accéder à un item du tableau en référence, je peux:
# 1. faire comme précédemment en déréférençant d'abord le tableau
print "${$arr[2]}[1]\n";
# 2. soit utiliser l'arrow operator (opérateur flêche)
print "$arr[2]->[1]\n";
# l'item 3 est aussi une référence vers un tableau, sauf qu'elle est créée
# sans passer par une variable
print "${$arr[3]}[2]\n",
"$arr[3]->[2]\n"; |
Partager