in reply to Perl only prints complete lines?

You are suffering from buffering.
use IO::Handle; STDOUT->autoflush(1); while ($num) { print "$num\r"; $num--; sleep 1; }
or
use IO::Handle; while ($num) { print "$num\r"; STDOUT->flush(); $num--; sleep 1; }