http://www.perlmonks.org?node_id=985187

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

When the below script is executed, sleep command is executed first and only after that the print statements are executed though they are present before the sleep command given . what might be the reason for this strange behaviour ???? thanks in advance!!!
#! /usr/bin/perl -w print "First line of the script"; print "Second line of the script"; $time = 5; while($time > 0) { sleep (5); $time--; }

Replies are listed 'Best First'.
Re: Problem with sleep command in perl
by choroba (Cardinal) on Aug 03, 2012 at 08:34 UTC
    Search for "buffering".
Re: Problem with sleep command in perl
by bulk88 (Priest) on Aug 03, 2012 at 15:50 UTC
    You are using buffered stdio. Only when the buffer has a newline will it print to console. Turn on autoflush http://perldoc.perl.org/perlvar.html#$| every print should cause a console print, but this also causes higher cpu and is less efficient.

    edit for mistake pointed out by another monk