Initiation au Perl
8. Les procédures
Perl comporte déjà des fonction intégrées, mais on a aussi besoin de
créer ses fonctions propres, appelées procédures. Elles peuvent être placées
n'importe où dans le programme, mais il est plutôt préférable des les placer
toutes au début ou à la fin. Une procédure a la forme suivante :
sub ma_procedure {
print "Merci d'avoir exécuter ma procédure.\n";
}
Dans la suite du programme, elle peut être exécutée par l'appel suivant :
&ma_procedure;
8.1 Variables locales
Lorsque l'on crée un procédure, il est préférable que les variables de la
utilisée dans la procédure n'interfère pas avec celle contenue dans le reste du programme.
On définit donc des variables local de la manière suivante :
local(<$var1>, <$var2>, ... , <$varN>);
ou
my(<$var1>, <$var2>, ... , <$varN>);
Ces variables locale ne sont définie qu'à l'intérieur de la procédure, et sont
réinitialisée à chaque appels.
8.2 Paramètres
Il est souvent utile de pouvoir passer des paramètres à une procédure, ont
utilise donc la syntaxe suivante lors de l'appel :
&ma_procedure; # Appel sans paramètre
&ma_procedure($p1); # Appel la routine avec 1 paramètre
&ma_procedure($p1,$p2); # Appel la routine avec 2 paramètres
Quand on appel la procédure, tous les paramètres passés sont
stockés dans une variable (tableau) spéciale @_ . Ainsi on peut les utiliser
soit directement à partir de cette variable, ou les affecter à une variable locale.
Exemple 1:
sub ma_procedure {
print "Les paramètres sont : "; print @_; # Affiche tous les paramètres
print "\n\n";
print "Le 1er paramètre est : $_[0]\n";
print "Le 2em paramètre est : $_[1]\n";
}
Exemple 2:
sub ma_procedure {
my($p1, $p2) = @_;
print "Le 1er paramètre est : $p1\n";
print "Le 2em paramètre est : $p2\n";
}
8.3 Renvoi des valeurs
Le résultat d'une procédure est toujours la dernière variable évaluée. Mais
pour la lisibilité, on préfère souvent utiliser la fonction "return" qui sort
de la procédure en renvoyant le résultat.
Par Exemple:
($v1, $v2) = &ma_procedure(25, 66);
print "v1: $v1\n; # 1650
print "v2: $v2\n; # 91
sub ma_procedure {
my($p1, $p2) = @_;
return ($p1*$p2,$p1+$p2) ;
# renvoie la multiplication et l'addition des 2 arguments.
}
|