L6T54-55 - Programmation Perl-Maîtrise OS II - Clementine Gross

Exercice 1

Interpolation et concaténation des variables

Une variable simple (dite "scalaire") est un identificateur toujours précédé du symbole $

print, l'instruction d'affichage, ne fait pas passer à la ligne automatiquement, c'est le role du caractère \n, qu'il faudra donc utiliser systématiquement.

Exécuter le petit script ci-dessous :

1. Comparez $s1 et $s2. Observer la différence entre l'usage des quotes ' et des guillemets ". Conclure.

2. Comparez $s3 et $s4. En déduire 2 façons de concaténer du texte avec des variables.

3. Modifier pour faire afficher :

Exercice 2

Entrées-sorties console

• Les accès aux fichiers s'effectuent habituellement par l'intermédiaire de variables particulières appelées filehandles, en français descripteurs de fichiers.

• Perl dote chaque programme exécuté de 3 descripteurs prédéfinis, STDIN, STDOUT et STDERR (reprise des canaux standard d'Unix : entrée clavier, sortie écran, sortie en erreur) qui sont immédiatement utilisables sans déclaration, contrairement aux accès à des fichiers réels.

• L'opérateur de lecture sur l'entrée standard (le clavier) est noté , souvent abrégé en <>. Un appel à cet opérateur lit la ligne saisie jusqu'au prochain caractère "nouvelle ligne" (y compris)

• L'instruction chomp $var permet de retirer ce caractère \n de la chaine et renvoie 1 s'il réussit. Ne pas la confondre avec chop $var qui retire le dernier caractère quel qu'il soit et le renvoie.

• La sortie standard sur l'écran, est noté . L'écriture, ici l'affichage écran, s'effectue avec print, sous la syntaxe générale : print STDOUT $texte; qu'il est agréable d'abréger en : print $texte

1. Le code est-il correct ? Commenter l'exécution ensuite

2. Corriger si nécessaire

3. Compléter le dialogue en demandant l'age

> Resultat <

Exercice 3

Opérateurs numériques

1. Dans le code qui suit, quel est le role du caractère \ devant $a ?

2. Faire lire 2 variables numériques $a et $b, à l'aide de l'opérateur <>

3. Faire afficher le résultat de l'addition sous la forme (par exemple) $a + $b = 200 + 350 = 550

4. Prolongement : à l'aide d'une itération while, dont le syntaxe est esquissée ci-dessous, afficher la table de multiplication par N (N saisi)

> Resultat <

Exercice 4

Boucle de lecture while

Saisir des lignes au clavier dans une boucle while (tant que) avec l'opérateur <> La fin de la saisie est provoquée par l'envoi du caractère Ctrl-d (eof) sur une ligne vide

1. Expliquer et tester le script initial

2. Expliquer ICI pourquoi l'affichage est identique à la saisie

3. Réécrire en n'utilisant que la variable spéciale $_ (voir ci-dessous, variables scalaires 5 et 6)

> Resultat <

Exercice 5

Accès aux fichiers

• La fonction open associe au fichier spécifié un filehandle (descripteur de fichier)

• Syntaxe :

• Chaque appel à l'opérateur "chevron" appliqué au descripteur F, provoque la lecture de la ligne suivante dans le fichier.

• L'instruction print F $chaine (attention, pas de virgule !) écrit la chaine comme un enregistrement dans le fichier. Rappel : en l'absence de descripteur, print envoie ses arguments sur la sortie standard, c'est-à-dire l'écran

1. Expérimenter le script suivant.

2. Expliquer le fonctionnement de la boucle de lecture : quel résultat renvoie l'affectation $ligne=

> Resultat <

Exercice 6

Ecrire dans un fichier

Ecrire ajouter.pl

1. Lire le nom du fichier (s'il n'existe pas, le nom sera "ajout.txt")

2. Ouvrir ce fichier en ajout

3. Ecrire une boucle (cf exo4.pl), dans laquelle chaque ligne saisie au clavier est imméditement écrite dans le fichier

4. Après sortie de boucle, pour controler afficher le contenu du fichier créé.

> Resultat <

Voici le fichier créé :

> ajout.txt <

Exercice 7

Copier un fichier

Ecrire copier.pl

1. Lire le nom du fichier à copier (s'il n'existe pas, le nom sera "essai.txt")

2. Lire le nom du fichier qui doit contenir la copie (par défaut "copie.txt")

3. Ouvrir ces 2 fichiers en lecture ou en écriture

4. Tant qu'il y a une ligne à lire dans le fichier source, la copier dans le fichier cible

5. Pour controler, afficher le contenu du fichier copié

Voici le fichier source :

> essai.txt <

> Resultat <

Voici le fichier cible :

> copie.txt <

Expressions régulières

Localisation des motifs

localisation.pl

Voici un petit texte débile, qu'on pourra améliorer à son gout

On demande d'écrire les motifs, puis de tester, pour chercher :

1. l'un des mots "moi", "toi", partout dans le texte

2. les sous-chaines "moi" ou "toi".

3. le mot "moi" seulement en début de phrase

4. tester la différence entre recherche de mots et de sous-chaines

> Resultat <