Perl


Convertisseur Euro/Francs

Un petit exemple de programme en Perl

Un petit programme qui montre quelques possibilités du langage PERL et des expressions régulières

Perl est un langage très puissant de manipulation de textes.Le but du petit programme suivant va nous permettre de voir comment contrôler la saisie de l’utilisateur à l’aide d’expressions régulières.


 Principe

Le but du programme est de permettre à l’utilisateur d’entrer directement une somme en Euro ou en francs en faisant suivre la valeur de l’unité.

Si la valeur est suivi d’un E (ou d’un "e") le programme traduira la valeur en Francs.

Si la valeur est suivi d’un F (ou d’un "f") le programme traduira la valeur en Euro.

D’autre part j’ai voulu rendre la saisie la plus souple possible. Les saisies suivantes seront donc valides : "23E", "15e", "12.34 f", ".45f", "-0.30f".

Par contre la saisie de l’unité est obligatoire.

 Expression régulière

Un des avantages de langage PERL est sa capacité de gérer les expressions régulière de manière native dans le langage.

Voici donc les explications de l’expression :

^([+-]?[0-9]*(\.[0-9]*)?) *([EeFf])$

Détails de l’expression :

^ début de ligne
[+-] ? Signe plus ou moins. Le " ?" indique 0 ou une fois le caractère
[0-9]* Caractère numérique. Le "*" indique de 0 ou plusieurs fois
(\.[0-9]*) ?) "\." caractère point [0-9]* des caractères numériques "( ... ) ?" ce qu’il y a entre parenthèse de 0 à une fois.
* Un espace de 0 à plusieurs fois
[EeFf] "F" ou "E" en majuscule ou minuscule.

D’autre part, les parenthèses dans une expression régulière permettent en plus du regroupement de récupérer des parties de motifs dans des variables PERL particulières nommées : $1, $2, .. à $9. Ce qui nous donne pour notre expression :

$1 La valeur saisie
motif : ([+-] ?[0-9]*(\.[0-9]*) ?)
$2 N’est pas utilisé dans le programme
$3 Unité saisie par le programme
Motif :([EeFf])

Source du programme

  1. #!/usr/bin/perl -w
  2.  
  3. ##########################################
  4. #
  5. # Convertisseur Francs/Euro et Euro/Fancs
  6. #
  7. ## ########################################
  8.  
  9.  
  10.  
  11. $taux = 6.55957;
  12.  
  13. printf "\n\n";
  14. printf "Entrez soit: une valeur en Francs suivi de F ou en Euro suivi de E puis ENTER:\n";
  15. printf "(Tapez q puis ENTER pour quitter.)\n";
  16. printf "=> ";
  17. $input = <STDIN>;
  18. chop( $input );
  19.  
  20. $fin = "non";
  21.  
  22. while ( $fin eq "non" )
  23. {
  24.         while ( $input =~ m/^([+-]?[0-9]*(\.[0-9]*)?) *([EeFf])$/ )
  25.         {
  26.                 $valeur = $1;
  27.                 $unite  = $3;
  28.                 if ( ( $unite eq "F" ) or ( $unite eq "f" ) )
  29.                 {
  30.                         $resultat = $valeur / $taux;
  31.                         printf "%.2f F = %.2f E\n" , $valeur , $resultat;
  32.                 }
  33.                 else
  34.                 {
  35.                         $resultat = $valeur * $taux;
  36.                         printf "%.2f E = %.2f F\n" , $valeur , $resultat;
  37.                 }
  38.                 printf "=> ";
  39.                 $input = <STDIN>;
  40.                 chop( $input );
  41.         }
  42.         if ( ( $input eq "Q" ) or ( $input eq "q" ) )
  43.         {
  44.                 $fin = "oui";
  45.         }
  46.         else
  47.         {
  48.                 printf( "Erreur de saisie !\n" );
  49.                 printf( "=> " );
  50.                 $input = <STDIN>;
  51.                 chop( $input );
  52.         }
  53. }
  54. printf( "\n\n" );

Télécharger


 Remarques

J’ai réalisé ce programme après quelques heures d’apprentissage, je n’ai donc pas d’expérience en PERL. Il permet malgré tout de montrer la puissance et la concision du langage.


Cet exemple montre une utilisation des expressions régulières avec le langage PERL. Il faut préciser que les expressions régulières ne sont pas spécifiques à PERL et que vous pourrez les utiliser avec de nombreux autres langages comme Java ou Python et aussi, un certain nombre de commandes UNUX/LINUX.

Article n° 3

Crée par: chris

Créé le: 25 octobre 2014

Modifié le: 6 janvier 2015

Nombre de visites: 54

Popularité: 11 %

Popularité absolue: 1

Mots clés de cet article


SPIP

2003-2024 LePpf
Plan du site | | RSS 2.0 | Sur YouTube

Visiteurs connectés : 4

Nombre moyen de visites quotidiennes sur le site: 198