Checking for Waiting Input
Problem
You want to know whether keyboard input is waiting without actually reading it.
Solution
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
Discussion
The -1
parameter to ReadKey
indicates a non-blocking read of a character. If no character is
available, ReadKey
returns
undef
.
See Also
The documentation for the Term::ReadKey module from CPAN; Section 15.6
Get Perl Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.