Perl: print back to beginning of line

后端 未结 4 1985
眼角桃花
眼角桃花 2020-12-07 01:28

Okay, so what I\'m trying to do is print out a percentage complete to my command line, now, I would like this to simply \'update\' the number shown on the screen. So somehow

4条回答
  •  隐瞒了意图╮
    2020-12-07 02:28

    Use "\r" or "\015" octal (aka "Return caret" aka "Carriage Return" character originating from typewriter days :)

    > perl5.8 -e 'print "11111\r222\r3\n";'
    32211
    > perl5.8 -e 'print "11111\015222\0153\n";'  
    32211
    

    Just don't forget to print at least as many characters as the longest string already printed to overwrite any old characters (as you can see in example above, the failure to do so will keep old characters).

    Another thing to be aware of is, as Michael pointed in the commment, the autoflush needs to be turned on while these printings happen, so that the output doesn't wait for newline character at the very end of the processing.

    UPDATE: Please note that 013 octal character recommended in another answer is actually a Vertical Tab:

    > perl5.8 -e 'print "11111\013222\0133\n";'    
    11111
         222
            3
    

提交回复
热议问题