in reply to print on one line

If I understand your intention, you have not structured your code correctly. You need the sleep function to be inside the for loop as well as the print; that means you cannot use the inverted loop format you have above. Try instead:

perl -le '$\="";$|=1;$cnt=5; for (0..$cnt){print "*";sleep 1;}'

Note I have also modified the special variable $| ($OUTPUT_AUTOFLUSH) - this modifies the flush behavior of the file handles. For a discussion of why, see Suffering from Buffering?.