|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Perl - Les fonctionsLa notion de fonction et de procédureOn appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la procédure dans le corps du programme principal. Les procédure permettent d'exécuter dans plusieurs parties du programme une série d'instructions, cela permet une simplicité du code et donc une taille de programme minimale. Lorsqu'une procédure renvoie une valeur, on parle alors de fonction. D'autre part, une fonction peut faire appel à elle-même, on parle alors de fonction récursive (il ne faut pas oublier de mettre une condition de sortie au risque sinon de ne pas pouvoir arrêter le programme...). La déclaration d'une fonctionAvant d'être utilisée, une fonction doit être définie car pour l'appeler
dans le corps du programme il faut que l'interpréteur Perl la connaisse, c'est-à-dire qu'il
connaisse son nom, ses arguments et les instructions qu'elle contient. La définition d'une fonction
s'appelle "déclaration".
sub Nom_De_La_fonction { liste d'instructions; }
Une fonction s'écrira de la même façon, à la différence près qu'elle contiendra une instruction return (pour retourner une valeur bien évidemment...) Voici un exemple de fonction en Perl :
sub Ma_Fonction { print "Cette fonction ne sert a rien"; return 10; }Une fois cette étape franchie, votre fonction ne s'exécutera pas tant que l'on ne fait pas appel à elle quelque part dans le script! Appel de fonctionPour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom (une fois de plus en respectant la casse) précédé du signe "&", suivi d'une parenthèse ouverte (éventuellement des arguments) puis d'une parenthèse fermante : &Nom_De_La_fonction(); Remarques:
Les arguments d'une fonctionIl est possible de passer des arguments (appelés aussi paramètres à une fonction, c'est-à-dire
lui fournir une valeur ou le nom d'une variable afin que la méthode puisse effectuer
des opérations sur ces arguments ou bien grâce à ces arguments.
Voici un exemple de fonction admettant de nombreux arguments, et leur ajoutant "1" :
sub AjouteUn { my(@args) = @_; foreach $element (@args){ $element .= '1'; } return(@args); } Il existe une autre façon d'accéder aux paramètres de la fonction,
celle-ci consiste à accéder individuellement à chacun des paramètres
grâce à la variable tableau $_[]. Ainsi $_[0] désigne le premier
élément du tableau. Voici un exemple de fonction admettant deux paramètres et
retournant leur somme :
sub AjouteDeux { return $_[0] + $_[1]; } Remarques:
Portée (visibilité) des variablesSelon l'endroit où on déclare une variable, celle-ci pourra être accessible (visible) de partout dans le code (elle est alors dite globale) ou bien que dans une portion confinée de celui-ci (variable locale), on parle de portée (ou visibilité) d'une variable. Lorsque l'on déclare une variable n'importe où dans le code (à l'intérieur d'un bloc d'instructions (entre des accolades) ou bien en début de code), la variable sera globale par défaut. Il est donc essentiel de veiller à la visibilité des variables avec Perl. Il est possible de rendre une variable locale grâce à la fonction My(). Celle-ci rend une variable
visible dans le bloc où elle est définie et seulement celui-ci.
La fonction My() s'utilise avec la syntaxe suivante :
$MaVariable = 2; sub AjouteDeux { my $MaVariable = 3; { print $MaVariable; # Renvoie undef a l'ecran my $MaVariable = 4; print $MaVariable; # Renvoie 4 a l'ecran } print $MaVariable; # Renvoie 3 a l'ecran } print $MaVariable; # Renvoie 2 a l'ecran Il est possible de rendre une variable locale visible dans tous les blocs contenus dans celui-ci, ainsi que dans toutes
les fonctions appelées à l'intérieur de ce bloc
grâce au mot-clé local :
$MaVariable = 2; sub AjouteDeux { local $MaVariable = 3; { print $MaVariable; # Renvoie 3 a l'ecran my $MaVariable = 4; print $MaVariable; # Renvoie 4 a l'ecran } print $MaVariable; # Renvoie 3 a l'ecran } print $MaVariable; # Renvoie 2 a l'ecran D'une manière générale il est préférable de donner des noms différents aux variables locales et globales pour des raisons de lisibilité et de compréhension du code... Trucs & astuces pertinents trouvés dans la base de connaissances
Discussions pertinentes trouvées dans le forum
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||