Perl-Term::ReadKey-模块

Term::ReadKey 模块用于简单的终端控制.

以下为几个重要子例程的解释.

ReadMode

其用法为:

1
ReadMode Mode [,Filehandle];

这里主要解释其 5 个模式的区别和用法:

  1. ‘normal’:普通模式,终端处于默认状态,输入会被缓存,按下回车键时输入会被传递给程序,并进行回显(将输入字符显示在终端上)。使用起来和 my $key = <STDIN> 类似, 按下回车时将缓冲区的内容发出

  2. ‘noecho’:无回显模式,输入字符不会在终端上显示,适用于输入密码等敏感信息的场景。和 ‘normal’ 类似, 只不过你输入的字符不会显示在屏幕上, 但是也需要回车来清空缓冲区

  3. ‘cbreak’:裸模式,输入不会被缓存,每输入一个字符就会立即传递给程序,同时回显被禁用。不需要按回车来清空缓冲区

  4. ‘raw’:原始模式,输入不会被缓存,每输入一个字符就会立即传递给程序,同时回显和终端信号都被禁用。这个模式适用于实现特殊的终端程序。

  5. ‘ultra-raw’:极致原始模式,类似于 raw 模式,但是在这个模式下,8位模式可以被打开,而 CR/LF 转换会被禁用。这个模式在特殊情况下使用,例如在实现终端模拟器时。

ReadKey

注意这个子例程一次只会 读入一个字符 , 因为底层是用 getc 子例程.

用法:

1
my $char = ReadKey MODE [, Filehandle];

默认从 STDIN 读取.

同样有几个模式:

  1. 0:普通读取模式,使用 getc 函数读取输入字符,程序会一直等待输入,直到收到回车符或结束符才会停止。

  2. -1:非阻塞读取模式,使用非阻塞方式读取输入字符,如果没有输入字符,程序会立即返回,而不是等待。这个模式适用于需要实时响应输入的场景。

  3. >0:定时读取模式,使用定时方式读取输入字符,程序会等待指定的时间(以毫秒为单位),如果在等待时间内没有输入字符,程序会返回,否则会返回输入字符。这个模式适用于需要等待一定时间后才进行下一步操作的场景。

ReadLine

ReadKey 类似, 只不过此时读入多个字符.


Perl-Term::ReadKey-模块
http://example.com/2023/04/15/Perl-Term-ReadKey-模块/
作者
Jie
发布于
2023年4月15日
许可协议