Objectif

Thème : manipulations basiques avec Perl.

Exercice 1

1. Copier le texte du programme ci-dessous dans un fichier et l'exécuter.
------------------------------------------------
#!/usr/local/bin/perl
# ce programme affiche "bonjour tout le monde"
print "bonjour tout le monde\n";
2. Modifier ce programme et ajouter l'affichage du message : "Mon premier programme écrit avec PERL".

On change le contenu de l'argument de la fonction print :


>> Voir le script

haut de la page

Exercice 2

Ecrire un programme qui crée trois variables $var1, $var2 et $var3 auxquelles vous affecterez les valeurs 33, 44 et 55 respectivement.
- affichez les valeurs de chaque variable en sortie.
- créez une variable $somme dans laquelle vous mettrez la somme des valeurs de chaque variable : $var1 + $ var2, $var1 + $var3... Affichez la valeur de $somme et des variables utilisées pour produire cette somme.
- créez une variable $produit dans laquelle vous mettrez le produit des valeurs de chaque variable : même remarque que ci-dessus.
- Permutez 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. Pour cela vous créerez une variable temporaire $tmp..
Exécution du script :

>> Voir le script

haut de la page

Exercice 3

a. parcours d'une liste
Récupérer le programme suivant, essayer de l'exécuter, si nécessaire corriger et compléter :
------------------------------------------
#!/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";

Exécution du script :


>> Voir le script (commenté)

b. manipulations de listes
Récupérer le programme suivant. Commenter les différentes instructions, et prévoir très précisément les affichages avant d'expérimenter :
-----------------------------------------
#!/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";

Exécution du script (les commentaires précis sont dans le corps du script) :


>> Voir le script (commenté)

haut de la page

Exercice 4

La mort des amants

Nous aurons des lits pleins d'odeurs légères,
Des divans profonds comme des tombeaux,
Et d'étranges fleurs sur des étagères,
Ecloses pour nous sous des cieux plus beaux.
Usant à l'envi leurs chaleurs dernières,
Nos deux coeurs seront deux vastes flambeaux,
Qui réfléchiront leurs doubles lumières
Dans nos deux esprits, ces miroirs jumeaux.
Un soir fait de rose et de bleu mystique,
Nous échangerons un éclair unique,
Comme un long sanglot, tout chargé d'adieux;
Et plus tard un Ange, entr'ouvrant les portes,
Viendra ranimer,
fidèle et joyeux,
Les miroirs ternis et les flammes mortes.

Charles Baudelaire

1. Le texte du poème ci-dessus est contenu dans le fichier amants.txt. Ecrire 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".
On fait un test if avec comme condition la recherche du motif "eau".
>> Voir le script | voir moteneau.txt

2. Vous réécrirez le programme pour numéroter toutes les lignes qui contiennent la même séquence
On reprend le programme auquel on ajoute un compteur qui va servir à numéroter les lignes, ainsi qu'une seconde condition à la structure if (else).
>> Voir le script | voir moteneau_num.txt

3. Créez un nouveau programme pour produire dans un nouveau fichier contenant le premier mot de chaque vers.
Après avoir segmenté chaque ligne en mots (fonction split avec comme motif l'espace) et avoir mis ces mots dans un tableau, la fonction shift va nous permettre de ressortir la premier élément de ce tableau.
>> Voir le script | voir premiermot.txt

4. Idem avec le dernier mot.
Même chose que précédemment, avec la fonction pop
>> Voir le script | voir derniermot.txt

Exercice 5

A partir du fichier amants.txt , construire un programme qui produit en sortie le poème précédent dans lequel vous remplacerez la forme graphique "les" par "des".
Modifiez ce programme pour modifier les séquences "un", "deux"... par "1", "2"...
>> Voir le script | voir remplacements.txt

haut de la page