OVH Cloud OVH Cloud

saisie de données PERL

5 réponses
Avatar
Jérôme
bonjour
quand j'exécute le code suivant en perl le message ne s'affiche que lorsque
la saisie à été effectuée
comment faire pour afficher le message avant ?
merci !

print "coucou les amis";
$az = <STDIN>;

5 réponses

Avatar
Ronan Le Hy
Jérôme a écrit:
quand j'exécute le code suivant en perl le message ne s'affiche que lorsque
la saisie à été effectuée

print "coucou les amis";
$az = <STDIN>;


perldoc -q buffer
En particulier:

If you want your output to be sent immediately when you execute print()
or write() [...], you must set the handle's autoflush flag. This flag is
the Perl variable $| and when it is set to a true value, Perl will flush
the handle's buffer after each print() or write().

Comme d'habitude, en Français chez Paul:
http://www.enstimac.fr/Perl/DocFr/perlfaq5.html
(1ère question)

--
Ronan

Less discussion! More hate!
Sabrina Downard in hates-software.all

Avatar
Jérôme
le code suivant donne toujours le meme résultat malgré ce que dit le site :

select((select(OUTPUT_HANDLE), $| = 1)[0]);
print "coucou les amis";
$az = <STDIN>;

je ne comprends pas peut etre cela vient de mon environnement
j'utilise active perl et Open Perl IDE sous windows 2000

Merci de votre aide !


"Ronan Le Hy" a écrit dans le message de
news:3f703a98$0$2790$
Jérôme a écrit:
quand j'exécute le code suivant en perl le message ne s'affiche que
lorsque


la saisie à été effectuée

print "coucou les amis";
$az = <STDIN>;


perldoc -q buffer
En particulier:

If you want your output to be sent immediately when you execute print()
or write() [...], you must set the handle's autoflush flag. This flag is
the Perl variable $| and when it is set to a true value, Perl will flush
the handle's buffer after each print() or write().

Comme d'habitude, en Français chez Paul:
http://www.enstimac.fr/Perl/DocFr/perlfaq5.html
(1ère question)

--
Ronan

Less discussion! More hate!
Sabrina Downard in hates-software.all




Avatar
Paul GABORIT
À (at) Tue, 23 Sep 2003 15:02:46 +0200,
"Jérôme" écrivait (wrote):
le code suivant donne toujours le meme résultat malgré ce que dit le site :

select((select(OUTPUT_HANDLE), $| = 1)[0]);
print "coucou les amis";
$az = <STDIN>;

je ne comprends pas peut etre cela vient de mon environnement
j'utilise active perl et Open Perl IDE sous windows 2000


À votre avis, à quoi correspond le OUTPUT_HANDLE de la ligne que vous avez
recopier ?

Remplacez-le par STDOUT et testez à nouveau...

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
Remove '.OOO' from e-mail address - Supprimez '.OOO' de l'adresse e-mail

Avatar
Scetbon Cyril
Paul GABORIT wrote:
À (at) Tue, 23 Sep 2003 15:02:46 +0200,
"Jérôme" écrivait (wrote):

le code suivant donne toujours le meme résultat malgré ce que dit le site :

select((select(OUTPUT_HANDLE), $| = 1)[0]);
print "coucou les amis";
$az = <STDIN>;

je ne comprends pas peut etre cela vient de mon environnement
j'utilise active perl et Open Perl IDE sous windows 2000



À votre avis, à quoi correspond le OUTPUT_HANDLE de la ligne que vous avez
recopier ?

Remplacez-le par STDOUT et testez à nouveau...

Il est même possible de ne pas faire de select s'il n'y en a pas eu

précédemment puis stdout est sélectionné par défaut.

donc

$|=1;
print "coucou les amisn";
$az = <STDIN>

suffit


Avatar
Jérôme
merci à tous ça marche niquel !

"Scetbon Cyril" a écrit dans le message de
news:bkpo1g$


Paul GABORIT wrote:
À (at) Tue, 23 Sep 2003 15:02:46 +0200,
"Jérôme" écrivait (wrote):

le code suivant donne toujours le meme résultat malgré ce que dit le
site :




select((select(OUTPUT_HANDLE), $| = 1)[0]);
print "coucou les amis";
$az = <STDIN>;

je ne comprends pas peut etre cela vient de mon environnement
j'utilise active perl et Open Perl IDE sous windows 2000



À votre avis, à quoi correspond le OUTPUT_HANDLE de la ligne que vous
avez


recopier ?

Remplacez-le par STDOUT et testez à nouveau...

Il est même possible de ne pas faire de select s'il n'y en a pas eu

précédemment puis stdout est sélectionné par défaut.

donc

$|=1;
print "coucou les amisn";
$az = <STDIN>

suffit