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

Cra*_*lus 1 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;  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 为什么当我输入end控制台我不能看到ahabreak从环路(last是相等的break权)?
  2. 什么是EOF阻止while循环的关键组合?我以为它在ctrl+D,Windows但它不起作用.

cho*_*oba 6

你的剧本错过了use strict; use warnings;.否则,你会注意到$line不是@line.

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

在MSwin中,Ctrl+ZEnter用作EOF.

更新:修正了EOF.

  • @Cratylus:这也是你应该使用`strict`的原因. (3认同)