You want to know whether keyboard input is waiting without actually reading it.
Use the CPAN module Term::ReadKey, and try to read a key in non-blocking mode by passing it an argument of -1
:
use Term::ReadKey; ReadMode ('cbreak'); if (defined ($char = ReadKey(-1)) ) { # input was waiting and it was $char } else { # no input was waiting } ReadMode ('normal'); # restore normal tty settings
The -1
parameter to ReadKey
indicates a non-blocking read of a character. If no character is available, ReadKey
returns undef
.
The documentation for the Term::ReadKey module from CPAN; Recipe 15.6