Perl-Term::ReadKey-模块
Term::ReadKey
模块用于简单的终端控制.
以下为几个重要子例程的解释.
ReadMode
其用法为:
1 |
|
这里主要解释其 5 个模式的区别和用法:
‘normal’:普通模式,终端处于默认状态,输入会被缓存,按下回车键时输入会被传递给程序,并进行回显(将输入字符显示在终端上)。使用起来和
my $key = <STDIN>
类似, 按下回车时将缓冲区的内容发出‘noecho’:无回显模式,输入字符不会在终端上显示,适用于输入密码等敏感信息的场景。和 ‘normal’ 类似, 只不过你输入的字符不会显示在屏幕上, 但是也需要回车来清空缓冲区
‘cbreak’:裸模式,输入不会被缓存,每输入一个字符就会立即传递给程序,同时回显被禁用。不需要按回车来清空缓冲区
‘raw’:原始模式,输入不会被缓存,每输入一个字符就会立即传递给程序,同时回显和终端信号都被禁用。这个模式适用于实现特殊的终端程序。
‘ultra-raw’:极致原始模式,类似于 raw 模式,但是在这个模式下,8位模式可以被打开,而 CR/LF 转换会被禁用。这个模式在特殊情况下使用,例如在实现终端模拟器时。
ReadKey
注意这个子例程一次只会 读入一个字符 , 因为底层是用 getc
子例程.
用法:
1 |
|
默认从 STDIN
读取.
同样有几个模式:
0
:普通读取模式,使用 getc 函数读取输入字符,程序会一直等待输入,直到收到回车符或结束符才会停止。-1
:非阻塞读取模式,使用非阻塞方式读取输入字符,如果没有输入字符,程序会立即返回,而不是等待。这个模式适用于需要实时响应输入的场景。>0
:定时读取模式,使用定时方式读取输入字符,程序会等待指定的时间(以毫秒为单位),如果在等待时间内没有输入字符,程序会返回,否则会返回输入字符。这个模式适用于需要等待一定时间后才进行下一步操作的场景。
ReadLine
和 ReadKey
类似, 只不过此时读入多个字符.