Etape 1

Les exercices seront parfois réalisés sur des fichiers de travail appartenant à un corpus travaillé selon plusieurs versions: la première, brute p96.tab, est issue d'un tableur (un tableur manipule des cellules organisées en lignes et colonnes, et permet de faire calculer la valeur d'une cellule à partir du contenu d'une ou de plusieurs autres cellules). C'est la version qui a été constitué dans le service de réanimation néonatale à partir des fiches papier remplies par les infirmières. Dans ce fichier, le nombre débutant la ligne concatène le numéro de bébé, celui du jour de l'observation et celui de l'observation dans la journée.La seconde p96.bal nomme les différentes informations contenues dans une fiche sur un bébé un jour donné à un moment déterminé. On dispose aussi de p96.fic qui regroupe toutes les fiches et de p96.tag qui correspond à une version étiquetée du corpus bébé.
 
 
On copie le programme suivant dans Emacs

#!/usr/local/bin/perl
# ce programme affiche "bonjour tout le monde"
print "bonjour tout le monde\n";

e1e1

Puis on l'exécute:

e1e12

On modifie ce programme et on ajoute l'affichage du message : "Mon premier programme écrit avec PERL".

e1e13

On enregistre le programme sous le nom monpremierprog.pl puis on exécute le programme:

e1e14

On a donc appris ici des choses élémentaires en langage Perl: la fonction print sert donc à afficher les éléments écrit entre guillemets à la suite, le \n permet de sauter une ligne et pour lancer un programme Perl via le terminal il suffit de passer une ligne de commande avec la syntaxe suivante: "perl nom_du_programme.pl argument_1 argument_2 arugment_n".
 
  On écrit un programme qui crée trois variables $var1, $var2 et $var3 auxquelles on affectera les valeurs 33, 44 et 55 respectivement.

e1e21

On ajoute des lignes au programme pour qu’il affiche les valeurs de chaque variable en sortie.

e1e22

On obtient le résultat suivant:

e1e23

Comme on peut le voir il n'y a pas qu'une seule et unique façon d'utiliser la fonction print avec Perl. Ainsi on peut tout écrire entre guillemets, mais on peut aussi ne pas mettre la variable entre guillemets auquel cas il faudra penser à la séparer du reste par des virgules.

On crée une variable $somme dans laquelle on met la somme des valeurs de chaque variable : $var1 + $ var2, $var1 + $var3, etc.  Puis on affiche la valeur de $somme et des variables utilisées pour produire cette somme.

e1e24

Et on obtient:
e1e25


On crée une variable $produit dans laquelle vous met le produit des valeurs de chaque variable.

e1e26
 
On obtient alors:

e1e27


On permute les valeurs de $var1, $var2 et $var3. C'est à dire que $var1 vaudra ce que valait $var2, $var2 ce que valait $var3, et $var3 ce que valait $var1.

e1e28

Pour faire cela on a utilisé une variable temporaire $tmp afin de stocker le contenu de $var1 pour ne pas le perdre lorsqu'on transférait le contenu de $var2 dans $var1.

Le résultat qu'on obtient est le suivant:

e1e29
 
  Parcours d'une liste

On va se servir du programme suivant afin de le corriger et de parcourir une liste:

------------------------------------------
#!/usr/bin/perl -w
@liste1 = (lundi mardi mercredi jeudi vendredi samedi dimanche);
print "affichage global :\n";
print @liste1,"\n";
print "@liste1\n";
print "taille de \@liste1 = (à compléter...) \n";
print "son dernier élément est : (à compléter...)\n";
print "affichage de \@liste1, élément par élément :\n";
print "\navec une boucle foreach :\n";
------------------------------------------

On  complète donc le programme:

e1e32a

On affiche tout d'abord la liste globale sans aucun espace. Puis on recommence mais avec les espaces afin de faciliter la lisibilité (pour cela on utilise un outil bien pratique déjà vu "\n"). On affiche la taille de la liste en se servant de la fonction scalar qui sert à renvoyer le nombre d'éléments d'un tableau (ici @liste1).  Puis on affiche le dernier élément de la liste en se servant de $# qui renvoie le dernier élément d'une liste.
Enfin on crée une boucle avec la fonction foreach: pour chaque variable $c de chaque ligne du tableau @liste1 j'affiche la variable $c, ceci afin d'afficher chaque élément de la liste (sans oublier le petit retour à la ligne).

Le résultat obtenu:

e1e33a

Fichier contenant le programme: cliquez!!


Manipulations de listes

On va commenter les différentes instructions, et prévoir très précisément les affichages avant d'expérimenter du programme suivant:

-----------------------------------------
#!/usr/bin/perl -w
@alpha = ('a'..'z'); @liste = (@alpha,0..9);
$el = $liste[3];
print "$el\n";
($a, $b, $c, @reste) = @liste ;
print "\$a= $a, \$b= $b, \$c =$c , \@reste= @reste\n";
($b, $a)= ($a, $b);
print "\$a= $a, \$b= $b \n";
$el = pop @liste;
print "\$el= $el, \@liste= @liste\n";
$el = shift @liste;
print "\$el= $el, \@liste= @liste\n";
print "\@alpha est la liste \n@alpha\n";
for ($i=0; $i<26 ; $i++) {
$el= pop @alpha;
unshift @alpha, $el;
}
print "\@alpha est maintenant \n@alpha\n";
-----------------------------------------


3b


Et le résultat de ce programme:

3b2

 
  1. Le texte du poème Les amants de Baudelaire est contenu dans le fichier amants.txt. On va écrire un programme qui ouvre le fichier amants.txt   et qui écrit dans un deuxième fichier moteneau.txt les seules lignes qui contiennent la séquence de caractères "eau".

41

Fichier contenant le résultat: cliquez!!

Fichier contenant le programme: cliquez!!



2. On va réécrire le programme pour numéroter toutes les lignes qui contiennent la même séquence

42

Fichier contenant le résultat: cliquez!!


Fichier contenant le programme: cliquez!!


3. On va créer un nouveau programme pour produire dans un nouveau fichier contenant le premier mot de chaque vers.

43

Fichier contenant le résultat: cliquez!!


Fichier contenant le programme: cliquez!!


4. On va créer un nouveau programme pour produire dans un nouveau fichier contenant le dernier mot de chaque vers.

44

Fichier contenant le résultat: cliquez!!


Fichier contenant le programme: cliquez!!

 
   A partir du fichier amants.txt  , on va construire un programme qui produit en sortie le poème précédent dans lequel on remplacera la forme graphique "les" par "des" et  "un", "deux" par  "1", "2", etc.


1


Fichier contenant le résultat: cliquez!!


Fichier contenant le programme: cliquez!!