Il existe 5 types de référence.
| Référencement | Déréférencement |
| $refScalaire = \$Scalaire; | ${$refScalaire} |
| $refVecteur = \@Vecteur; | @{$refVecteur} |
| $refVecteurAssoc = \%VecteurAssociatif; | %{$refVecteurAssociatif} |
| $refFonction = \&Fonction; | &{$refFonction} |
| $refReférence = \$refScalaire; | ${${$refReférence}}} |
Les références sont utilisées pour passer des vecteur à une fonction.
Voici un contre-exemple de passage de vecteurs à une fonction :
Fonction ( (1..5), ("A".."F"));
sub Fonction{
(@vect1, @vect2)
= @_;
print("Le premier vecteur
est @vect1.\n");
print("Le second vecteur
est @vect2.\n");
}
Voici un exemple correct de passage de vecteurs à une fonction. On passe les références des vecteurs.
Fonction ( \(1..5), \("A".."F"));
sub Fonction{
($refVect1, $refVect2)
= @_;
print("Le premier vecteur
est @{$refVect1}.\n");
print("Le second vecteur
est @{$refVect2}.\n");
}
$scalaire = 10;
@vecteur = (1,2);
%vectAssoc = ("1" => "Salut");
printref( $scalaire, @vecteur, %vectAssoc);
printref( \$scalaire,\@vecteur, \%vectAssoc);
printref( \&printref, \\$scalaire );
sub printref{
foreach(@_){
$reftype = ref($_);
defined($reftype) ? print "$reftype " : print("Ce n\'est pas une ref ");
}
print "\n";
}
Nous donnons ici une illustration de l'utilisation de l'opérateur ->.
%VectAss1 = ( "Couleur" => "Bleu",
"Nom" => "Millan",
"Numero" => 12545);
%VectAss2 = ("Couleur" => "Rouge",
"Nom" => "Hillard",
"Numero" => 6789);
@database = (\%VectAss1, \%VectAss2);
print ( %{$database[0]}->{"Couleur"});
En voici une autre.
%database = (
"Jeudi" => { "Nom" =>"Bleu",
"Couleur" => "Vermeil",
"Numero" => 123
},
"Vendredi" =>{"Nom" => "Vert",
"Couleur" => "Turquoise",
"Numéro" => 456
}
);
print %{$database{"Jeudi"}}->{"Numero"}."\n";