为什么我不能在循环时终止这个?

时间:2013-04-07 18:03:15

标签: windows perl while-loop

我制作了以下剧本:

print "Will accept input until EOF";  

while(defined($line = <STDIN>)){  
    print "Input was $line \n";  
    if(chomp(@line) eq "end"){  
        print "aha\n";  
        last;  
    }  
}  

我有两个问题:

  1. 为什么当我在控制台中输入end时,我看不到循环中的ahabreak last等于break右)?
  2. 停止EOF循环的while键组合是什么?我认为ctrl+DWindows是{{1}},但它不起作用。

2 个答案:

答案 0 :(得分:6)

您的脚本错过了use strict; use warnings;。否则,您会注意到$line不是@line

此外,chomp不会返回更改的字符串,它会在适当的位置更改它并返回已删除的字符数。

在MSwin中, Ctrl + Z Enter 用作EOF。

更新:修正了EOF。

答案 1 :(得分:3)

我修改了你的代码:

use strict;
use warnings;

print "Will accept input until EOF";  

while( my $line = <STDIN> ){  
   chomp $line;
   print "Input was $line\n";  
   if( $line eq 'end'){  
      print "aha\n";  
      last;  
   }  
}