gpt4 book ai didi

character - perl6 如何重新打开 $*IN 进行输入?

转载 作者:行者123 更新时间:2023-12-01 00:35:46 24 4
gpt4 key购买 nike

我一直在尝试从 $*IN 中读取字符,包括控制字符。但是,在输入 Control-D 后,$*IN 似乎变得不起作用。如何重新打开 $*IN 进行阅读?

To exit type 'exit' or '^D'
> my $x=$*IN.getc # entered "e"
e
e
> say ($x=$*IN.getc).ord # entered Ctrl-D
10
> $x=$*IN.getc # nothing can be entered now
(Any)
> my $y=$*IN.getc
(Any)
>

谢谢你的帮助。

最佳答案

当用户按下 Ctrl-D 时自动关闭标准输入流,这不是 Perl 6 在流的接收端所做的事情——它是 Unix 终端驱动程序在其流的末端所做的事情。因此,您将在所有其他编程语言中遇到相同的问题。

我认为您不能要求终端在关闭 stdin 流后重新打开它。

但是,您可以指示终端暂时禁用其自动处理控制字符的默认行为,如 Ctrl+D(所谓的“Cooked mode”),而使用“原始模式 ”,其中 EOT除其他外,字符将按原样传递给您的程序。然后,您的程序可以决定如何解释该字符。

指示终端进入原始模式的一种方法是 termios API,由 Term::termios 提供的 Perl 6 绑定(bind)模块。 (使用模块自述文件中演示的 .makeraw 方法。)

关于character - perl6 如何重新打开 $*IN 进行输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41329620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com