Perl CookbookPerl CookbookSearch this book

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



Library Navigation Links

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