Well, the most common way that I know of would be to use Curses (Nonblocking!). If you're really masochistic, you can use Term::Cap (I believe Curses is just a friendly set of c libraries that manipulate the termcap stuff in a friendlier manner), which is in the perl core.