les fonctions en Perl



  1. Qu'est ce qu'une fonction

Une fonction est un sous programmes permettant ainsi faire plusieurs fois le même traitement en ne devant l'écrire qu'une seule fois. Avec les fonctions, vous pouvez aussi bien écrire dans un fichier, afficher du texte, modifier des valeurs... L'intérêt est donc déjà la lisibilité du code (cela allège énormement le code si vous utilisez certains traitements plusieurs fois), et accélère également les mises à jour... Il suffit effectivement d'imaginer que vous souhaitiez afficher une valeur, mais une 600 fois. Si vous écrivez 600 fois la commande, le jour où vous devez modifier un peu le code, vous devez le faire sur les 600 lignes, alors qu'avec une fonction, vous ne le faites qu'une seule et unique fois ! Un vrai bonheur non ???


  2. Declaration de fonctions

Voila un exemple de définition de fonction :
sub maFonction {
  [bloc_de_code]
}

Ceci permet de définir la fonction "maFonction". Attention, les fonctions doivent être déclarées avant leur utilisation, donc soit dans le programme courant (cas que nous traitons ici) soit dans un module à part (cas que nous traiterons dans un futur plus ou moins proche !).



  3. utilisation de fonction



  3. 1. sans parametres

Vous souhaitez par exemple utiliser une fonction qui affiche l'heure courante avec un format personnalisé, voila ce que vous pourriez obtenir :
#!/usr/bin/perl
use strict;v sub afficheHeure {
  my $heurePerso;
  my ($sec,$min,$heure,$mjour,$mois,$annee,$sjour,$ajour,$isdst) = localtime(time);
  $annee = 1900+$annee;
  $heurePerso = "$mjour/$mois/$annee jour $sjour de la semaine, jour num $ajour depuis le debut de l'annee
($heure:$min:$sec)";
  print $heurePerso."\n";
}
for my $i (1..10) {
  afficheHeure();
  sleep(20);
}

Le résultat sera de ce style :
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:12:8)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:12:28)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:12:48)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:13:8)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:13:28)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:13:48)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:14:8)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:14:28)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:14:48)
5/2/2003 jour 3 de la semaine, jour num 63 depuis le debut de l'annee (13:15:8)

Si vous souhaitez juste changer l'ordre d'affichage, le texte ou quoi que ce soit, il vous suffit de le faire une seule fois.
Pour info, la commande "time" permet donc de récupérer l'heure et la date, à la seconde près.



  3. 2. avec parametres



  3.2.1. Exemples

L'utilisation de fonction avec paramètres est nettement plus intéressante dans la majorité des cas. Par exemple, vous souhaitez écrire du texte HTML toujours avec la même forme, mais où le texte change. Pour se faire, vous allez donc passer en paramètre les 2 phrases qui changent : le titre, le sous-titre.

Voila un programme qui pourrait faire cela très bien :
#!/usr/bin/perl
use strict;
sub afficheTexte {
  my $Titre = $_[0];
  my $Texte = $_[1];
  print "<font color=blue size=+2>$Titre</font><br>\n";
  print "<center><font color=black>$Texte</font></center><br>\n";
}
afficheTexte("Premiere partie","Permet de commencer le sujet");
afficheTexte("Deuxieme partie","Permet d'etudier le sujet plus précisemment");
afficheTexte("Troisieme partie","Permet de clore le début sur le sujet");

Ce programe donne le résultat suivant :
<font color=blue size=+2>Premiere partie</font><br>
<center><font color=black>Permet de commencer le sujet</font></center><br>
<font color=blue size=+2>Deuxieme partie</font><br>
<center><font color=black>Permet d'etudier le sujet plus précisemment</font></center><br>
<font color=blue size=+2>Troisieme partie</font><br>
<center><font color=black>Permet de clore le début sur le sujet</font></center><br>



  3.2.2. Quelques explications

  • Le passage de paramètre se fait en mettant tout simplement entre parenthèse les valeurs (variables ou valeurs) que vous voulez envoyer à la fonction
  • Les paramètres envoyés à la fonction sont présent dans le tableau "@_". Et donc, pour accéder à sa première valeur, il faut lire "$_[0]" comme pour tout les tableaux...
  • Ensuite, il suffit d'écrire le texte qui vous intéresse



  3.2.3. Autre syntaxe

#!/usr/bin/perl
use strict;
sub afficheTexte {
  my ($Titre, $Texte) = @_;
  print "<font color=blue size=+2>$Titre</font><br>\n";
  print "<center><font color=black>$Texte</font></center><br>\n";
}
afficheTexte("Premiere partie","Permet de commencer le sujet");
afficheTexte("Deuxieme partie","Permet d'etudier le sujet plus précisemment");
afficheTexte("Troisieme partie","Permet de clore le début sur le sujet");

La différence est donc dans la récupération des paramètres. Comme il s'agit d'un tableau, on peut également y accéder ainsi, en mettant le nom des variables qui nous intéressent ($Titre et $Texte) et où elles doivent récupérer leurs valeurs (@_).


Page modifiée le : 02/05/2004
Site modifié le : 16/05/2016


Valid XHTML 1.0 Transitional