On Fri, 2002-04-05 at 14:37, Balint, Jess wrote: > Hello all. I have been working on this all day. I am trying to print out > numbers 1 through 10 as this loop progesses. For some reason, it doesn't > print the numbers until the end of the loop. The $done variable is set to 1 > by the getUniqRand() function once certain conditions are met. Everything > works fine except the printing. The @random_numbers array is filled up one > by one from the getUniqRand() function. $opt_s is the number of elements in > @random_numbers when it is done. So if I am going to have 10,000 number in > the array, I want to print a digit each time another 1,000 are added to the > array. I believe the algorithm in the if() is correct to do this. > > Is there any reason they wouldn't print until the end? > > do{ > getUniqRand( $lines, $opt_s ); > print( ++$fill_pos, " " ) if( scalar( @random_numbers ) % ( int( > $opt_s / 10 ) + 1 ) == 0 ); > } until $done;
STDOUT is buffered. That means no text is displayed until a "\n" is printed or the end of the program (which ever comes first). You can change this behavior by setting the $| ($OUTPUT_AUTOFLUSH if you 'use english;') variable to 1. do { local($|) = 1; #make STDOUT autoflush getUniqRand( $lines, $opt_s ); #I don't like the way this cat is skinned #one liners should be on one line #print( ++$fill_pos, " " ) if( scalar( @random_numbers ) % ( int( # $opt_s / 10 ) + 1 ) == 0 ); #I would do this # % forces scalar context and unless handles the == 0 part print ++$fill_pos, " " unless @random_numbers % (int($opt_s/10)+1); } until $done; -- Today is Setting Orange the 22nd day of Discord in the YOLD 3168 Or is it? Missile Address: 33:48:3.521N 84:23:34.786W -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]