Toon posts:

[perl] print + sleep probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Iemand enig idee waarom deze simpele code niet werkt?

Perl:
1
2
3
4
5
6
7
8
9
10
#/usr/bin/perl

my $i = 0;

while ($i != 5)
{
    print "*";
    $i++;
    sleep 1;
}


Zonder 'sleep 1;' is de uitvoer '*****', maar met 'sleep 1;' is de uitvoer helemaal niets, het lijkt alsof er niets gebeurt.

[ Voor 11% gewijzigd door Verwijderd op 28-05-2004 19:21 ]


  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

Verwijderd schreef op 28 mei 2004 @ 19:21:
Iemand enig idee waarom deze simpele code niet werkt?

Perl:
1
2
3
4
5
6
7
8
9
10
#/usr/bin/perl

my $i = 0;

while ($i != 5)
{
    print "*";
    $i++;
    sleep 1;
}


Zonder 'sleep 1;' is de uitvoer '*****', maar met 'sleep 1;' is de uitvoer helemaal niets, het lijkt alsof er niets gebeurt.
Ik krijg gewoon aan het eind van van het script 5 sterretjes. De reden waarom het pas aan het eind van het script komt is buffering, maak de stream unbuffered en de sterretjes komen per seconde.

Verwijderd

Topicstarter
$| = 1; |:( bedankt....

Verwijderd

Misschien een klein beetje offtopic, maar mocht iemand ooit de search gebruiken dan vind ie wellicht dit topic met de oplossing. En het is handig om te weten natuurlijk.

Als je MySQL gebruikt (DBI en DBD::mysql) dan kan het voorkomen dat je een veeeel hogere load krijgt dan normaal als je gebruik maakt van de genoemde 'hot' buffering. De oplossing is dan om de hot buffering uit te zetten op het moment dat je je queries gaat doen. Ik weet niet zo snel meer of het al load gaf met Prepare of pas met Execute.

Is dit ook bij andere database systemen (postgres/interbase/etc) het geval ? ... Geen idee :)