按Enter键时如何停止获取用户输入?

时间:2014-04-02 13:04:55

标签: perl

我使用

从用户那里获取输入数据
$input=<>;

但是当输入输入时它不会进入下一个过程它接受输入字符,但只在类型^z时才会进入,但我想继续下一步按 Enter

1 个答案:

答案 0 :(得分:4)

您提供的代码本身并没有按照您的说法执行。它只是读取一行然后继续前进。在标量上下文中,readline()函数(使用尖括号<>是一个快捷方式)是一个迭代器,并且当时读取一行直到文件句柄耗尽(它到达文件末尾)

有两件事可以解释这种行为:

  1. 您已更改输入记录分隔符$/,因此不再需要换行符来表示行结束,
  2. 您实际上正在使用列表上下文,数组或括号,例如:

  3. @input = <>;
    # or
    ($input) = <>;
    

    在第一种情况下,它将一直读取,直到找到输入记录分隔符并返回要分配给$input变量的(多行)字符串。您可以通过按下发送文件结尾来提前终止它:Windows中的Ctrl-Z或* nix中的Ctrl-D。

    在第二种情况下,readline()位于列表上下文中,并将一直读到它找到文件结尾,这就是上面讨论的内容。