On appelle procédure un sousprogramme qui permet deffectuer un ensemble dinstructions par simple appel de la procédure dans le corps du programme principal. Les procédures permettent dexécuter dans plusieurs parties du programme une série dinstructions cela permet une simplicité du code et donc une taille de programme minimale.
Lorsquune procédure renvoie une valeur on parle alors de fonction. Dautre part une fonction peut faire appel à ellemê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...).
Avant dêtre utilisée une fonction doit être définie car pour lappeler dans le corps du programme il faut que linterpréteur Perl la connaisse cestàdire quil connaisse son nom ses arguments et les instructions quelle contient. La définition dune fonction sappelle "déclaration".
La déclaration dune procédure se fait selon la syntaxe suivante :
Le nombre daccolades ouvertes (Fonction boucles et autres structures) doit être égal au nombre daccolades fermées !
La même chose sapplique pour les parenthèses les crochets ou les guillemets !
Une fonction sécrira de la même façon à la différence près quelle contiendra une instruction return (Pour retourner une valeur bien évidemment...).
Voici un exemple de fonction en Perl :
Une fois cette étape franchie votre fonction ne sexécutera pas tant que lon ne fera pas appel à elle quelque part dans le script !
Pour 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 dune parenthèse ouvrante (Éventuellement des arguments) puis dune parenthèse fermante :
Remarques :
Le point virgule signifie la fin dune instruction et permet au navigateur de distinguer les différents blocs dinstructions.
Si jamais vous avez défini des arguments dans la déclaration de la méthode il faudra veiller à les inclure lors de lappel de la fonction (Séparés par des virgules !).
Il est possible de passer des arguments (Appelés aussi paramètres) à une fonction cestàdire de lui fournir une valeur ou le nom dune variable afin que la méthode puisse effectuer des opérations sur ces arguments ou bien grâce à ces arguments.
Le passage darguments à une fonction se fait au moyen dun tableau spécial @_ contenant chacun des arguments passés à la fonction. Ainsi lorsque lon crée une fonction acceptant des paramètres il suffit de stocker chacun des éléments du tableau dans des variables locales. Cela se fait à laide de la commande "my". Il est ainsi possible de parcourir lensemble des paramètres passés à la fonction à laide de linstruction foreach cestàdire une instruction permettant de parcourir lensemble des enregistrements dun tableau.
Voici un exemple de fonction admettant de nombreux arguments et leur ajoutant "1" :
Il existe une autre façon daccéder aux paramètres de la fonction celleci 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 :
Remarques :
Il est possible de passer plus de paramètres que vous nen utilisez (Cest inutile mais cela peut arriver par accident) cestàdire que lorsque 3 arguments sont par exemple passés à la fonction qui nen utilise seulement 2 Perl ne déclenchera aucune erreur.
Si par contre le corps de la fonction fait appel à un paramètre non existant ($_[3]) Perl retournera une erreur précisant que lindex utilisé nest pas défini comme il le ferait pour un tableau où lon veut accèder à un élément inexistant...
Selon lendroit où lon déclare une variable celleci pourra être accessible (Visible) de partout dans le code (Elle est alors dite globale) ou bien que dans une portion confinée de celuici (Variable locale) on parle de portée (Ou visibilité) dune variable.
Lorsque lon déclare une variable nimporte où dans le code (À lintérieur dun bloc dinstructions (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(). Celleci rend une variable visible dans le bloc où elle est définie et seulement celuici. La fonction my() sutilise avec la syntaxe suivante :
Il est possible de rendre une variable locale visible dans tous les blocs contenus dans celuici ainsi que dans toutes les fonctions appelées à lintérieur de ce bloc grâce au motclé local :
Dune 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...
Ce document intitulé « Perl Les fonctions » issu de Comment Ça Marche (http://www.commentcamarche.net/) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier modifier des copies de cette page dans les conditions fixées par la licence tant que cette note apparaît clairement.