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 