打破<stdin> </stdin>的最好方法

时间:2012-08-08 18:14:14

标签: perl loops stdin

我正试图在某种标志上突破stdin,但是当我运行我的代码时,我仍然必须使用控制d来突破。请有人在这里给我一个指针谢谢:

while(my $line = <STDIN>){
chomp $line;
last if $line == 0;
push @stdin, $line;
}

1 个答案:

答案 0 :(得分:3)

更新(两次)

我会使用一种或另一种类型的字符串比较。 ==是一个数字比较,强制比较的两边都是数字。几乎除了纯数字之外的任何字符串都会等于0。

while (my $line = <STDIN>) {
   chomp $line;

   # use the string comparison operator...
   last if $line eq "0";
   # or use a match operator...
   # last if $line =~ m/^0$/;
   # or match on some special number
   # last if $line == 3.1415926;

   push @stdin, $line;
}

我在windows中测试了这个:

perl -e "while(my $line = <STDIN>){chomp $line;last if $line =~ m'^[.]$'}END{print @l}"

和unix:

perl -e 'while(my $line = <STDIN>){chomp $line;last if $line=~m/^[.]$/;push@l,$line}END{print@l,$/}'

OLD ANSWER

Windows中的

Ctrl + Z ?已经内置的标志。在Unix上,你使用 Ctrl + D