perl:references
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
perl:references [2010/11/27 11:31] – root | perl:references [2013/03/12 23:33] (Version actuelle) – root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Références ====== | ||
+ | |||
====== 1. Introduction ====== | ====== 1. Introduction ====== | ||
Ligne 13: | Ligne 15: | ||
Si vous avez déjà des variables et que vous voulez obtenir leur référence, | Si vous avez déjà des variables et que vous voulez obtenir leur référence, | ||
+ | <code perl> | ||
my $ref_scalaire = \$scalaire; | my $ref_scalaire = \$scalaire; | ||
my $ref_liste = \@liste; | my $ref_liste = \@liste; | ||
my $ref_hash = \%hash; | my $ref_hash = \%hash; | ||
+ | </ | ||
===== Définir directement des références ===== | ===== Définir directement des références ===== | ||
Il peut être utile d' | Il peut être utile d' | ||
+ | <code perl> | ||
my $ref_scalaire = \42; | my $ref_scalaire = \42; | ||
my $ref_liste = [" | my $ref_liste = [" | ||
my $ref_hash = { " | my $ref_hash = { " | ||
+ | </ | ||
Notez l' | Notez l' | ||
Ligne 30: | Ligne 36: | ||
La référence en tant que telle ne représente pas la structure qu' | La référence en tant que telle ne représente pas la structure qu' | ||
+ | <code perl> | ||
my $ref = \42; | my $ref = \42; | ||
print " | print " | ||
+ | </ | ||
===== Déréférencement ===== | ===== Déréférencement ===== | ||
Pour manipuler la structure de donnée référencée, | Pour manipuler la structure de donnée référencée, | ||
+ | <code perl> | ||
my $ref = \42; | my $ref = \42; | ||
print " | print " | ||
Ligne 46: | Ligne 55: | ||
print join(" - ", keys %{$ref_hash}); | print join(" - ", keys %{$ref_hash}); | ||
print %{$ref_hash}{" | print %{$ref_hash}{" | ||
+ | </ | ||
Souvent, on veut juste extraire un élément d'une liste ou d'un hash, et cette syntaxe est trop lourde et peu lisible. Dans ce cas, il existe un raccourci : | Souvent, on veut juste extraire un élément d'une liste ou d'un hash, et cette syntaxe est trop lourde et peu lisible. Dans ce cas, il existe un raccourci : | ||
+ | <code perl> | ||
my $ref_liste = [" | my $ref_liste = [" | ||
print $ref_liste-> | print $ref_liste-> | ||
Ligne 53: | Ligne 64: | ||
my $ref_hash = { " | my $ref_hash = { " | ||
print $ref_hash-> | print $ref_hash-> | ||
+ | </ | ||
Il existe enfin un dernier raccourci: il est possible de ne pas spécifier la flèche entre deux indiçages de liste (ceci permettant d' | Il existe enfin un dernier raccourci: il est possible de ne pas spécifier la flèche entre deux indiçages de liste (ceci permettant d' | ||
+ | <code perl> | ||
my @matrice = ( | my @matrice = ( | ||
[1, 0, 2], | [1, 0, 2], | ||
Ligne 63: | Ligne 76: | ||
print $matrice[$_]-> | print $matrice[$_]-> | ||
print $matrice[$_][$_] foreach (1..3); | print $matrice[$_][$_] foreach (1..3); | ||
+ | </ | ||
===== Copie ===== | ===== Copie ===== | ||
Si on copie des références, | Si on copie des références, | ||
+ | <code perl> | ||
my $number = 42; | my $number = 42; | ||
my $ref1 = \$number; | my $ref1 = \$number; | ||
Ligne 73: | Ligne 88: | ||
my $ref2 = $ref1; | my $ref2 = $ref1; | ||
${$ref2} = 57; # $number vaut 57 | ${$ref2} = 57; # $number vaut 57 | ||
+ | </ | ||
===== Exemples ===== | ===== Exemples ===== | ||
Avec un hash de listes : | Avec un hash de listes : | ||
+ | <code perl> | ||
my %notes = ( | my %notes = ( | ||
" | " | ||
Ligne 84: | Ligne 100: | ||
print "La dernière note de Pierre est ${$notes{" | print "La dernière note de Pierre est ${$notes{" | ||
print "La dernière note de Pierre est $notes{" | print "La dernière note de Pierre est $notes{" | ||
+ | </ | ||
Ou alors une liste de hashes: quand on parcourt la liste, les éléments sont des références, | Ou alors une liste de hashes: quand on parcourt la liste, les éléments sont des références, | ||
$_->... : | $_->... : | ||
- | | + | |
+ | <code perl> | ||
my @eleves = ( | my @eleves = ( | ||
{ " | { " | ||
Ligne 96: | Ligne 114: | ||
print " | print " | ||
} | } | ||
+ | </ | ||
Enfin, les références sont particulièrement utiles pour pouvoir passer des listes et des hashes à des fonctions sans que ces dernières soit mises à plat dans la liste //@_// : | Enfin, les références sont particulièrement utiles pour pouvoir passer des listes et des hashes à des fonctions sans que ces dernières soit mises à plat dans la liste //@_// : | ||
+ | <code perl> | ||
sub rapport { | sub rapport { | ||
my $temperatures = shift; | my $temperatures = shift; | ||
Ligne 104: | Ligne 124: | ||
(1..12); | (1..12); | ||
} | } | ||
+ | </ | ||
**Références à des références :** | **Références à des références :** | ||
- | < | + | < |
my $maison = " | my $maison = " | ||
my @voitures = (" | my @voitures = (" |
perl/references.txt · Dernière modification : 2013/03/12 23:33 de root