Référence sur type de variable
Référence sur Scalaire :
my $var = 18;
my $refvar = \$var;
$$refvar = 52; # Affecte 52 à $var
print $$refvar; # Affiche la valeur de $var
Référence et fonction :
Exemple :
sub Init {
my ($refvar) = @_; # Référence sur l’argument passé à la fonction
$$refvar = 0;
}
Init($refsurargument); # ou Init(\$argument);
Exemple :
sub fncValeur {
my $valeur = 3.14;
return \$valeur;
}
my $PI = fncValeur();
$valeur n’existe que dans la fonction fncValeur, mais tant qu’une référence pointera sur sa valeur, celle-ci existera (et occupera un espace mémoire).
Un autre appel à la fonction fncValeur, créera une nouvelle variable, ie : espace mémoire.
Référence sur tableau :
my @tab = (1,4,5,7);
my $reftab = \@tab;
On peut alors accèder au tableau soit par la variable @tab soit par sa référence.
@tab <=> @$reftab
$tab[i] <=> $$reftab[i]
ou $reftab->[i]
Utilisation des référence pour créer des tableaux de tableaux :
my $tab1 = (1,2,3);
my $tab1 = (1,2,3);
my $tab = (7,8,\$tab1,\$tab2,9,0);
$tab est un tableau comportant les scalaires 7,8,9 et 0 et deux tableaux, tab1 et tab2.
Référence sur table de hachage :
my $refhac = \$hac;
On a alors :
%hac <=> %$refhac
$hac{cle} <=> $$refhac{cle}
ou $refhac -> {cle}
On peut mixer grâce aux références les tableaux de tableaux avec les tables de hachages.