Machine à écrire Perl
1/ Voici une machine écrire électronique en Perl. Essayez la , tapez CONTROL-C pour arrêter.
while(<STDIN>) {
print $_;
}
Chaque fois que vous tapez ENTER une ligne est acceptée et imprimée sur l’écran. La variable spéciale $_ contient chaque ligne d’entrée.
2/ Changez le programme de manière suivante : au lieu d’afficher la lettre ligne par ligne on veut afficher toute la lettre lorsqu’on a fini. On indique à notre machine qu’on a fini en tapant STOP (suivi par ENTER, naturellement).
Résultat pour 1
Affichage :
Résultat pour 2
#/usr/local/bin/perl
while($entree=<STDIN>) {
#déclanchement de l'affichage de la lettre
if ($entree=~/STOP/) {
print $sortie;
}
#si l'utilisateur ne tape pas STOP, on place tout ce qu'il écrit dans une variable
else {
$sortie=$sortie.$entree;
}
}
Affichage :
Compter les mots
Servez-vous de split pour calculer et afficher le nombre de mots dans votre lettre du programme précédent.
Résultat
#/usr/local/bin/perl
while ($entree=<STDIN>) {
if ($entree=~/STOP/){
print $sortie;
@mot=split (/ |\n/, $sortie); #on fractionne la chaîne de caractères à chaque " " ou à chaque retour à la ligne
$nb_mot=$#mot+1; # $#mot renvoie le dernier indice du tableau mot, en ajoutant +1 il renvoie le nombre d'éléments
print ("Il y a : $nb_mot mot(s) dans cette lettre.");
}
else {
$sortie=$sortie.$entree;
}
}
Affichage :
Comptage des lignes
Affichez la lettre entière de votre programme précédent avec un compteur de lignes au début de la ligne.
Résultat
#!usr/local/bin/perl
while ($entree=<STDIN>) {
if ($entree=~/STOP/){
print $sortie;
@mot=split (/ |\n/, $sortie);
$nb_mot=$#mot+1;
print ("Il y a : $nb_mot mot(s) dans cette lettre.");
}
else {
$compteur=$compteur+1; #à chaque ligne on ajoute 1 au compteur
$sortie=$sortie."$compteur. ".$entree; #on concatène le numéro du compteur et la ligne qui vient d'être taper avec ce que la variable contient déjà
}
}
Affichage :
Haut de page