home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book HomePerl CookbookSearch this book

15.9. 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; Recipe 15.6


Previous: 15.8. Using POSIX termios Perl Cookbook Next: 15.10. Reading Passwords
15.8. Using POSIX termios Book Index 15.10. Reading Passwords

Library Navigation Links

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