Ik zit met een probleem dat print te laat output geeft. Zie het volgende vb:
De output van deze code, met als STDIN-input "input" vetgebruikt, is:
Een oplossing blijkt het toevoegen van "$| = 1" te zijn, dus:
De output wordt dan:
Het rare is dat $|=1; alleen nodig is bij verschillende Windows PERL IDE's. Als ik zonder $|=1; via perl.exe in dos-prompt (cmd) uitvoer, gaat het flushen wel meteen goed, en heb ik ook geen last van de lege regel. Maar, de Windows IDE's maken volgens mij ook gewoon gebruik van perl.exe, maar waarom lukt het dan bij de IDE's niet, en in DOS-prompt wel goed?
code:
1
2
3
4
| #!perl print "print1\n"; <stdin>; print "print2\n"; |
De output van deze code, met als STDIN-input "input" vetgebruikt, is:
Zoals je ziet, er wordt meteen om input gevraagd, en daarna wordt de print pas uitgevoerd (geflushed uit de STDIN buffer). Behoorlijk irritant.inputprint1
print2
Een oplossing blijkt het toevoegen van "$| = 1" te zijn, dus:
code:
1
2
3
4
5
| #!perl $| = 1; print "print1\n"; <stdin>; print "print2\n"; |
De output wordt dan:
De print wordt nu dus wel meteen uitgevoerd, maar is nog niet correct. Ik krijg nu namelijk ongewenst een lege regel zonder dat ik daar om gevraagd heb. Heeft iemand hier een oplossing voor?print1
inputprint2
Het rare is dat $|=1; alleen nodig is bij verschillende Windows PERL IDE's. Als ik zonder $|=1; via perl.exe in dos-prompt (cmd) uitvoer, gaat het flushen wel meteen goed, en heb ik ook geen last van de lege regel. Maar, de Windows IDE's maken volgens mij ook gewoon gebruik van perl.exe, maar waarom lukt het dan bij de IDE's niet, en in DOS-prompt wel goed?