Le langage Perl – Structures & fonctions (Partie III)

perl_logo

Comme vous avez pu le voir dans mon article précédent, nous avons commencé à approfondir les différents aspects du langage Perl. Je vous propose dans cet article de nous concentrer sur les structures & les fonctions.

Les structures

Les structures sont d’écriture simple.

Rappel : Perl est un langage sensible à la casse.

a. Les boucles

Les boucles en Perl ressemblent beaucoup aux langages C et Pascal

  • for
    • C’est la réplique du « for » en C.
    • Exemple
for ($i = 0; I < 10; $i++) {

action 1 ;

action 2;

}

 

  • while
    • C’est à nouveau la même instruction qu’en C, mais avec en plus la possibilité d’utiliser « until » pour faire une négation. « until » exécute le bloc jusqu'à ce que l’instruction soit vraie, contrairement au « while » qui s’exécute tant que l’instruction est vraie.
    • Exemple
$i = 0;

do while ($i < 10) {

print $i++;

}

Le résultat va afficher les chiffres de 0 à 9 à l’écran. On remarque au passage que l’incrémentation peut se faire comme en C.

Il est également possible d’effectuer le test à la fin de la boucle en utilisant le DO.

$i = 0;

do {

print $i++;

} while ($i < 10);

 

  • foreach
    • Cette instruction permet de parcourir tous les éléments d’un tableau ou d’une structure quelconque.
    • Syntaxe
foreach $eltdutableau (@nomdutableau) {

instruction 1;

}

    • Exemple
foreach $ligne (@ensdelignes)

{

print $ligne;

}

Cet exemple va afficher tous les éléments du tableau @ensdelignes car chaque élément du tableau est copié dans $ligne afin de pouvoir être traité. Si le tableau est vide, on ne passera pas dans la boucle.

b. Les conditions

Perl permet de faire les branchements if-then-else.

  • if simple
    • Syntaxe
if (condition) {

action à faire si la condition est remplie

}

else {

action à faire si la condition n’est pas remplie

}

  • if composé
    • Syntaxe
if (condition 1) {

action à effectuer si la condition 1 est remplie

}

elsif (condition 2 ) {

action à effectuer si la condition 2 est remplie

}

else {

action à effectuer si aucune des 2 conditions n’est remplie

}

c. Les fichiers

Comme le langage Perl a été développé pour pourvoir traiter de manière simple les fichiers, il est normal qu'il possède quantité de fonctions relatives au traitement de fichiers.

Seules les fonctions de base seront abordées ici.

En Perl, un fichier peut être un fichier physique situé sur un disque, mais aussi le clavier (STDIN), l'écran (STDOUT) et la sortie erreurs (STDERR).

L'entrée STDIN est souvent employée quand le script Perl doit traiter des informations en provenance d'un formulaire, puisque les données y sont stockées.

  • Ouverture d'un fichier

L'ouverture d'un fichier se fait via la commande :

open (nom_symbolique, "nom_fichier")

nom_fichier contient le chemin d'accès au fichier (par exemple d:/perl/log/appli.log). On ajoute aussi généralement avant le nom du fichier, la manière dont on va accéder au fichier. Les accès possibles sont présentés dans le tableau ci-dessous.

Commande Description
open(nom_symbolique," nom_fichier") Ouvre le fichier en lecture
open(nom_symbolique, "<nom_fichier") L'ouvre aussi en lecture
open(nom_symbolique, ">nom_fichier") Ouvre le fichier en écriture. S'il n'existe pas il est créé.
open (nom_symbolique,"

>>nom_fichier")

Ouvre le fichier en ajout, tout ce qui est écrit dans le fichier sera placé à la fin de celui-ci.
open(nom_symbolique, "+>nom_fichier") Ouvre le fichier en lecture et en écriture
open(nom_symbolique, | PROGRAM) Envoie les données imprimées dans le fichier nom_symbolique vers le programme PROGRAM
open(nom_symbolique,

PROGRAM |)

Utilise les données envoyées par PROGRAM comme source de données.
  • La fermeture d'un fichier se fait via la commande suivante

close(nom_symbolique);

  • Lire et écrire

Une méthode souvent utilisée en Perl consiste à lire entièrement le fichier et à placer tout son contenu dans une table. Cette méthode est très pratique quand on travaille avec des fichiers dont chaque ligne correspond à un enregistrement.

On fait cela grâce à l'instruction :

@LINES=<nom_symbolique>;

Cette ligne place tout le contenu du fichier nom_symbolique dans le tableau @LINES.

On peut également lire une partie du fichier via l'instruction :

 

read(nom_symbolique, BUFFER, LONGUEUR,POSITION_DEBUT);

Cette instruction va lire le fichier nom_symbolique sur une longueur de LONGUEUR à partir de POSITION_DEBUT et va placer le résultat de cette lecture dans BUFFER.

L'écriture dans un fichier peut se faire de manière relativement simple en utilisant l'instruction :

print nom_symbolique TEXTE;

Cela imprime dans le fichier nom_symbolique les données contenues dans TEXTE. Quand on ne spécifie pas de nom de fichier, cela signifie que l'on affiche TEXTE à l'écran.

TEXTE peut contenir des constantes mais aussi des appels de variables comme dans l'exemple suivant :

$prenom = "Paul";

print "\nHello, je m’appelle $prenom.";

Ce morceau de code affiche à l'écran :

Hello, je m’appelle Paul.

Une autre instruction de sortie est l'instruction « printf ». Tout comme en C, elle permet de spécifier le format de sortie des données. Sa syntaxe générale est :

printf nom_symbolique(FORMAT, VARIABLES);

Cela permet d'aligner des nombres sur le signe décimal comme le montre l'exemple suivant :

$depenseAlimentaire = 123.34;

$depenseHabille = 23345.45;

printf("Alimentaire = \%8.2f\n", $depenseAlimentaire);

printf("Habille = \%8.2f\n", $depenseHabille);

Ce morceau de code provoquera l'affichage suivant :

Alimentaire = 123.34

Habille = 23345.45

Perl possède également toutes sortes de fonctions permettant de se positionner dans un fichier à un endroit donné, de supprimer des fichiers, de bloquer l'accès à des fichiers.

Les fonctions

Comme beaucoup de langages de programmation, Perl permet de créer ses propres fonctions.

Elles peuvent être placées n'importe où dans le programme, mais il est préférable de les placer toutes au début ou à la fin. La forme d’une fonction est :

sub ma_fonction {

print "Ligne 1 de ma fonction\n";

print "Ligne 2 de ma fonction\n";

}

L’appel d’une fonction se fait en précédant son nom du signe ‘&’.

Pour appeler la fonction définit ci-dessus, on fait donc :

&ma_fonction;

Ce qui provoquera l'affichage de :

Ligne 1 de ma fonction

Ligne 2 de ma fonction

Si l'on veut utiliser des paramètres avec les fonctions, on fait suivre l'appel de la fonction des arguments séparés par des virgules, le tout entre parenthèses.

Les arguments sont récupérés dans la fonction via la variable tableau @_ . Il est donc possible d'accéder à un élément via son index.

Ci-dessous un exemple de passage de paramètres à une fonction :

sub Afficher {

print "Argument 1 est $_[0]\n";

print "et $_[1] le 2ème argument\n";

}

&Affichage;("Pluton", "Jupiter"); # appel de fonction

Cela provoque l'affichage de :

Argument 1 est Pluton

et Jupiter le 2ème argument

Conclusion

Les structures et les fonctions en Perl ressemblent beaucoup à celles du langage C. L’apprentissage est alors grandement facilité pour les programmeurs connaissant le C, ou même Java.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.