我的Perl代码如何捕获Ctrl + D?

时间:2011-07-22 08:09:13

标签: perl

chomp($input = <>);

我如何知道$input Ctrl + D

3 个答案:

答案 0 :(得分:2)

当你从<>获得undef时,你知道你已经达到了eof,但在你的情况下,chomp正在隐藏它。

在EOF之前阅读的通常的Perl习语如下:

while(<>) {
  chomp;
  # do whatever you want with the line in $_
  # ...
}

答案 1 :(得分:2)

我想你的问题ctrl-d等同于EOF,就像在UNIX上一样?在$fh中有一些文件句柄:

while ( <$fh> ) {
  # use $_ here
}

或者,如果你坚持要明确说明Perl在幕后所做的事情:

while ( defined( $_ = <$fh> ) ) {
  # use $_ here
}

或者使用其他变量:

while ( defined( my $in = <$fh> ) ) {
  # use $in here
}

答案 2 :(得分:0)

每个人似乎都在为你提出的问题增加很多。

简单地说,为:

chomp($input = <>);

您可以通过以下方式判断^D已被按下:

print "EOF reached\n" if not defined $input;