ysth has asked for the wisdom of the Perl Monks concerning the following question:

The recent obfuscations Perl plays Pong! and Boxed In have led me to wonder if there is a better, yet portable, way to print strings at a given screen position, clear the screen, etc. For anything with $ENV{TERM} set and a termcap database, there is the core Term::Cap module. But as far as I know, that isn't going to work under Windows. Are there standard escape sequences that will work in a DOS window?

I think Term::Cap plus hardcoded stuff for Windows will cover the vast majority of monks, but am curious to know if there are monks out there for whom neither way will work.

  • Comment on cursor placement/clear screen in DOS window

Replies are listed 'Best First'.
Re: cursor placement/clear screen in DOS window
by BrowserUk (Patriarch) on Jan 25, 2004 at 13:13 UTC

    Depends what you mean by a "DOS window".

    1. command.com

      You can install ansi.sys under some (all?) variations of win32--95/98/NT4 for sure, others I never tried--and it will respond to ANSI standard escape sequences. I couldn't recommend it though.

    2. cmd.exe

      There is no generic solution, but from perl you can emulate it using Win32::console::ANSI.

    I'm not sure about things like 4NT.

    I did write a post-processor in C that took the output from programs--that embedded ansi escape sequences in their output--via a pipe and translated that into calls directly to the console apis. Which works quite well, but the code was owned by my employer so I no longer have access to it.

    It wouldn't be hard to write something similar in perl using the above module.

    Then there is the option of using one of the unix-like shells which usually have it built-in.


    Examine what is said, not who speaks.
    "Efficiency is intelligent laziness." -David Dunham
    "Think for yourself!" - Abigail
    Timing (and a little luck) are everything!

      Thanks for the suggestions. They led me to Win32::Console, which is included in the libwin32 distribution and has the WriteChar and Cls methods to do what I want.