Perl5 リファレンス

       getc FILEHANDLE

       getc    Returns the next character from the input file
               attached to FILEHANDLE, or the undefined value at
               end of file, or if there was an error.  If
               FILEHANDLE is omitted, reads from STDIN.  This is
               not particularly efficient.  However, it cannot be
               used by itself to fetch single characters without
               waiting for the user to hit enter.  For that, try
               something more like:

                   if ($BSD_STYLE) {
                       system "stty cbreak /dev/tty 2>&1";
                   else {
                       system "stty", '-icanon', 'eol', "\001";

                   $key = getc(STDIN);

                   if ($BSD_STYLE) {
                       system "stty -cbreak /dev/tty 2>&1";
                   else {
                       system "stty", 'icanon', 'eol', '^@'; # ASCII null
                   print "\n";

               Determination of whether $BSD_STYLE should be set
               is left as an exercise to the reader.

               The `POSIX::getattr' function can do this more
               portably on systems purporting POSIX compliance.
               See also the `Term::ReadKey' module from your
               nearest CPAN site; details on CPAN can be found on
               the CPAN entry in the perlmodlib manpage.