in reply to adding non printable characters in perl's print function

Character 13, in ASCII and derived character sets, is Carriage Return (CR). It is a non-printable character that terminals usually interpret as a request to move the cursor to the start of the current line.

It can be represented as \r (at least on Windows and unix systems), \x0D and \015 in Perl string literals to avoid the trouble of actually placing the character in the literal.

Some fun with \r:

$| = 1; # Turn off buffering on STDOUT. print( " 5"); sleep(1); print("\r 4"); sleep(1); print("\r 3"); sleep(1); print("\r 2"); sleep(1); print("\r 1"); sleep(1); print("\r** BOOM **\n");

Replies are listed 'Best First'.
Re^2: adding non printable characters in perl's print function
by Anno (Deacon) on Feb 21, 2007 at 19:30 UTC
    printf( "\r%5s", $_), sleep( /\d/) for reverse "\r** BOOM **\n", 1 .. 5; # :)

    Anno

      The purpose of the snippet was to highlight the effect of \r, not to hide it.
        The purpose of my snippet was not to improve yours, let alone correct it. Yours having fulfilled its purpose, I added it as a kind of second step.

        Actually, I only posted it for the little sleep( /\d/) hack. I thought that (and its purpose) made it mildly interesting.

        Anno