Je commence à apprendre perl, en utilisant la Wrox Beginning Perl available on perl.org et avez une question concernant un par exemple la boucle qu'ils fournissent au chapitre 3.Pourquoi l'ajout ou la suppression d'une nouvelle ligne change-t-il la façon dont perl fonctionne pour les fonctions de boucle?
#!/usr/bin/perl
use warnings;
use strict;
my @count = (1..10);
for (reverse(@count)) {
print "$_...\n";
sleep 1;
}
print "Blast Off!\n"
C'est le script qu'ils fournissent, et il fonctionne comme prévu. Il affiche un nombre suivi de ... chaque seconde, en attendant une seconde entre chaque nombre. Une fois terminé, il affiche
Cependant, si je supprime le saut de ligne de l'instruction print, le comportement change. Le script attend silencieusement 10 secondes, puis affiche tous les 10 numéros et Blash Off!
à la fois. Pourquoi le changement?
#!/usr/bin/perl
use warnings;
use strict;
my @count = (1..10);
for (reverse(@count)) {
print "$_...";
sleep 1;
}
print "Blast Off!\n"
STDOUT est tamponné par défaut. Faites "perldoc perlvar" et cherchez $ | – xcramps
Pour plus de plaisir essayez 'print" $ _... \ r' (après avoir réglé autoflush); –