关于<STDIN>

关于<STDIN>

while(defined($data = <STDIN>))
{
chomp $data;
print $data;
}
为什么循环不会结束呢,或者下面
while($data = <STDIN>)
{
chomp $data;
last unless $data;
}
怎么不能跳出循环啊,我不输入任何东西,直接敲回车,这样也不行啊
各位帮助一下,我是个新手
应该敲ctrl+D
回车的话你的输入是"\n",不是所谓的"没有输入"


QUOTE:
原帖由 rainbow3850032 于 2008-5-10 12:56 发表
while(defined($data = ))
{
chomp $data;
print $data;
}
为什么循环不会结束呢,或者下面
while($data = )
{
chomp $data;
last unless $data;
}
怎么不能跳出循环啊,我不输入任何东西,直接敲回 ...

下面的那段代码应该可以跳出循环啊!
那敲入回车,经过chomp之后,应该就没有了呀,后面那个unless 判断应该可以跳出循环了啊?
怎么还是没跳出来啊,不懂了,o(∩_∩)o...,请教了!


QUOTE:
原帖由 rainbow3850032 于 2008-5-10 13:33 发表
那敲入回车,经过chomp之后,应该就没有了呀,后面那个unless 判断应该可以跳出循环了啊?
怎么还是没跳出来啊,不懂了,o(∩_∩)o...,请教了!



[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
while(my $data = <STDIN>)
{
chomp $data;
last unless $data;
}
print "goes to here \n";

敲一下回车以后的运行结果

QUOTE:
<lig@romeo:~/chinaunix>$ ./last

goes to here

while(defined($data = <STDIN>))
{
chomp $data;
print $data;
}
这种的需要最后用ctrl+D来表明结束输入吧,回车是没有用的