perl函数说明(getc)

  • getc FILEHANDLE
  • getc

这个函数从附着到 FILEHANDLE 上的输入文件返回下一个字节。在文件结尾的时候,或者碰到 I/O 错误的时候它返回 undef。如果省略了 FILEHANDLE,那么该函数从 STDIN 中读取。

这个函数有点慢,但是偶尔可以用于从键盘上读取一个字符输入(实际上是字节)——前提是你能让你的键盘输入不经过缓冲。这个函数需要从标准 I/O 库里来的未经缓冲的输入。糟糕的是,标准的 I/O 库还没有标准到能够提供一种可移植的方法,告诉下层操作系统供应无缓冲的键盘输入到标准 I/O 系统。要做着件事情,你必须稍微更聪明一点,并且采取操作系统相关的做法。在 Unix 里,你可以说:

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

   $key = getc;

   if ($BSD_STYLE) {
      system "stty -cbreak /dev/tty 2>&1";
   } else {
      system "stty", "icanon", "eol", "^@";    # ASCII NUL
   }

   print "\n";

上面的代码把在终端上敲入的下一个字符(字节)放到字串 $key 里。如果你的 stty 程序有象 cbreak 这样的选项,那么你就需要 $BSD_STYLE 为真的地方的代码。否则你就需要它为假的地方的代码。判断 stty(1) 的选项就留给读者做练习吧。

POSIX 模块用 POSIX::getattr 函数提供了一个做这件事情的一个更具移植性的版本。又见来自离你最近的 CPAN 站点里的 Term::ReadKey 模块获取更具移植性和更灵活的方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值