in reply to When is a while not a while?
I think you need to explore the wonders of Term::ReadKey,
which has lots of neat tricks but one of them is the function
ReadKey.
And I quote from perldoc Term::ReadKey ( slightly reformatted to make it read easier )
You can play meaner games with select() if you cannot get this module installed.ReadKey MODE [, Filehandle] Takes an integer argument, which can currently be one of the following values: 0 Perform a normal read using getc -1 Perform a non-blocked read >0 Perform a timed read (If the filehandle is not supplied, it will default to STDIN.) If there is nothing waiting in the buffer during a non-blocked read, then undef will be returned. Note that if the OS does not provide any known mechanism for non-blocking reads, then a `ReadKey -1' can die with a fatal error. This will hopefully not be common.
In Section
Seekers of Perl Wisdom