Toon posts:

[perl]Inhoud variabele pas getoond aan eind van programma

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met het volgende probleem.
Het is voor mij nog steeds volledige willekeur, maar er zal vast een reden voor zijn.

In sommige gevallen laat perl de inhoud van een variabele pas zien, nadat ie alle code heeft afgewerkt. De ouput van de code beneden laat 10 seconde op zich wachten en dan staat er netjes:
0123456789

Ik zou graag willen dat ie om de seconde de waarde van $i laat zien.

Het stomme is, dat als ik ipv 'sleep(1)' bijvoorbeeld 'system('ps -aux > textfile.txt')' doe, dan zie ik wel real-time '012345679' verschijnen.

code:
1
2
3
4
5
6
7
#!/usr/bin/perl -s -w

for ($i = 0; $i <10; $i +=1)
{
        sleep(1);
        print "$i";
}


Kan iemand mij helpen aan de truc, om de realtime weergave te forceren zonder dat ik bijvoorbeeld 'print "$i"' moet vervangen voor 'print "$i\n"'?

Dank. :)

  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05-2025
in php heb je het commando flush()... ik weet niets van perl, maar misschien bestaat er voor perl ook wel zoiets

  • odysseus
  • Registratie: Augustus 2000
  • Nu online

odysseus

Debian GNU/Linux Sid

Buffering uitzetten kan in Perl door de variabele $| op een waarde ongelijk aan 0 te zetten. Aangezien STDOUT meestal per regel gebufferd wordt en je alles op één regel print, komt alles pas aan het eind op het scherm. Print je over verschillende regels, dan verwacht ik dat het wel goed gaat zonder die variabele te wijzigen :).

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
Het was idd die $|

Het stond niet in m'n Perl-boek. Ik denk dat ik moet upgraden. :)

Beetje laat, maar hartelijk dank!