Checking for Waiting Input (Perl Cookbook, 2nd Edition)

## 15.9. Checking for Waiting Input

### 15.9.1. Problem

You want to know whether keyboard input is waiting without actually reading it.

### 15.9.2. 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

### 15.9.3. Discussion

The `-1` parameter to `ReadKey` indicates a non-blocking read of a character. If no character is available, `ReadKey` returns `undef`.

### 15.9.4. See Also

The documentation for the Term::ReadKey module from CPAN; Recipe 15.6

Copyright © 2003 O'Reilly & Associates. All rights reserved.