Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

forcer la sortie du print

3 réponses
Avatar
Sylvain
Bonjour,

La formulation n'est peut-être pas très claire...
J'ai un script qui teste en boucle des serveur en faisant des ping
et qui envoie un mel et enregistre l'alerte dans une base.

Je voulai faire une bête temporisation, en affichant un . chaque seconde
pour ne pas s'inquiéter de l'inactivité, mais si sous win2000 avec activ
perl 5.6 j'ai bien l'affichage progressif des '.', sous linux,
la pause est faite en aveugle, et ce n'est qu'au \n à la fin que la
ligne de points s'affiche.

y-a un buffer sur STDOUT ou un truc du genre ?
Comment forcer la sortie immédiate du caratère ?



print "Debut:\n";
&jefaitlapause(15);
print "Fin !\n";

sub jefaitlapause {
my($tempo) = @_;
print "Tempo $tempo s ";
while ($tempo>0) {
print '.';
sleep(1);
$tempo--;
}
print "\n";
}

3 réponses

Avatar
cyrille
Sylvain a écrit:
y-a un buffer sur STDOUT ou un truc du genre ?

oui.

la solus simple que je connais est de mettre avant le 1er print la ligne
suivante :

local $| = 1

qui "unbufferize" stdout et peut êter aussi stderr ...

cyrille
Avatar
Sylvain



local $| = 1

qui "unbufferize" stdout et peut êter aussi stderr ...

cyrille



Merci, ça marche !

Avatar
Lyriel
Et y a t'il une solution, dans le cas de l'affichage sur une page HTML ?
Modifier l'entête peut-être ?
Merci...

cyrille a écrit:
Sylvain a écrit:
y-a un buffer sur STDOUT ou un truc du genre ?

oui.

la solus simple que je connais est de mettre avant le 1er
print la ligne
suivante :

local $| = 1

qui "unbufferize" stdout et peut êter aussi stderr ...

cyrille


--
Article posté sur http://web2news.com