如何检测Ctrl + D以便在Perl中突破循环?
while (1){
$input = <STDIN>;
print $input;
#This is where I would check for CTRL+D
#last if ($input equals to CTRL+D); EXIT LOOP
if($input > 0){
print " is positive\n";
}
elsif($input < 0){
print " is negative\n";
}
else { print " is zero\n"; }
}
答案 0 :(得分:7)
使用
while (defined($input = <STDIN>)) {
...
}
当用户输入Ctrl-D时,<STDIN>
将返回undef
。
更一般地说,你可以做到
while (defined($input = <>)) {
...
}
并且您的程序将从@ARGV
中指定的任何文件读取输入,如果没有命令行参数,则从<STDIN>
读取。