OVH Cloud OVH Cloud

while et sleep

4 réponses
Avatar
Cyril
Bonjour tout le monde,

Le script suivant :

#!/usr/bin/perl
while(1) {
print "#";
sleep 2;
print "%";
}

Pourquoi je ne vois pas mes "#" ?
Si j'enlève la boucle while ou le sleep, là ça s'affiche ?!?
Je ne dois pas comprendre la fonction sleep (ou encore moins perl)...
Pourquoi quand je vire la boucle while, le # s'affiche après les 2 secondes
en même temps que le % ?

Peut être que mon script est mal fait. Ce que je voudrai faire c'est lancer
un script toutes les n secondes (n proche de 2)

Merci à tous

Cyril

4 réponses

Avatar
Pierre
Cyril wrote:
Bonjour tout le monde,

Le script suivant :

#!/usr/bin/perl
while(1) {
print "#";
sleep 2;
print "%";
}

Pourquoi je ne vois pas mes "#" ?
Si j'enlève la boucle while ou le sleep, là ça s'affiche ?!?
Je ne dois pas comprendre la fonction sleep (ou encore moins perl)...
Pourquoi quand je vire la boucle while, le # s'affiche après les 2 secondes
en même temps que le % ?

Peut être que mon script est mal fait. Ce que je voudrai faire c'est lancer
un script toutes les n secondes (n proche de 2)

Merci à tous



Je ne veux pas dire de bêtise, mais à priori, je dirai que ton "#" est
bufferisé, et le second appel à print doit vider le buffer.
de plus veux-tu uniquement afficher '#' et '%', si oui, mets les juste
entre simple quote ('#'), ça evitera que Perl n'essaye de les interpréter.

--
Pierre

Avatar
laurent terzief
n vide le buffer

"Pierre" a écrit dans le message de news:
c1fd4a$kph$
Cyril wrote:
Bonjour tout le monde,

Le script suivant :

#!/usr/bin/perl
while(1) {
print "#";
sleep 2;
print "%";
}

Pourquoi je ne vois pas mes "#" ?
Si j'enlève la boucle while ou le sleep, là ça s'affiche ?!?
Je ne dois pas comprendre la fonction sleep (ou encore moins perl)...
Pourquoi quand je vire la boucle while, le # s'affiche après les 2
secondes


en même temps que le % ?

Peut être que mon script est mal fait. Ce que je voudrai faire c'est
lancer


un script toutes les n secondes (n proche de 2)

Merci à tous



Je ne veux pas dire de bêtise, mais à priori, je dirai que ton "#" est
bufferisé, et le second appel à print doit vider le buffer.
de plus veux-tu uniquement afficher '#' et '%', si oui, mets les juste
entre simple quote ('#'), ça evitera que Perl n'essaye de les interpréter.

--
Pierre



Avatar
dominix
"Pierre" a écrit dans le message de news:
c1fd4a$kph$
Cyril wrote:
Bonjour tout le monde,

Le script suivant :

#!/usr/bin/perl
while(1) {
print "#";
sleep 2;
print "%";
}

Pourquoi je ne vois pas mes "#" ?




[remis droit pour la clarté]

laurent terzief wrote:
n vide le buffer


faut
"n" ajoute un saut de page est c'est tout.
pour vider le buffer il faut mettre qq chose dans $|
comme par exemple
$|++ _au debut_ du script

ce qui donne
#!/usr/bin/perl
$|++;
while(1) {
print "#n";
sleep 2;
print "%n";
}

ensuite *laurent* il faut apprendre a poster correctement
CAD apres le post
merci de tenir compte des bons usages aux prochains posts.

--
dominix



Avatar
dominix
dominix wrote:
"Pierre" a écrit dans le message de news:
c1fd4a$kph$
Cyril wrote:
Bonjour tout le monde,






salut


Pourquoi je ne vois pas mes "#" ?




[remis droit pour la clarté]

laurent terzief wrote:
n vide le buffer


faut
"n" ajoute un saut de page est c'est tout.
de LIGNE, c'est un saut de ligne, sot du clavier que je suis


--
dominix