关于<STDIN>

rainbow3850032
关于<STDIN>

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

churchmice
应该敲ctrl+D
回车的话你的输入是"/n",不是所谓的"没有输入"

shucho
[quote]原帖由 [i]rainbow3850032[/i] 于 2008-5-10 12:56 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8353946&ptid=1095687][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
while(defined($data = ))
{
chomp $data;
print $data;
}
为什么循环不会结束呢,或者下面
while($data = )
{
chomp $data;
last unless $data;
}
怎么不能跳出循环啊,我不输入任何东西,直接敲回 ... [/quote]

下面的那段代码应该可以跳出循环啊!

rainbow3850032
回复 #2 churchmice 的帖子

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

churchmice
[quote]原帖由 [i]rainbow3850032[/i] 于 2008-5-10 13:33 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8354066&ptid=1095687][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
那敲入回车,经过chomp之后,应该就没有了呀,后面那个unless 判断应该可以跳出循环了啊?
怎么还是没跳出来啊,不懂了,o(∩_∩)o...,请教了! [/quote]
[code]
#!/usr/bin/perl
use strict;
use warnings;
while(my $data = <STDIN>)
{
chomp $data;
last unless $data;
}
print "goes to here /n";
[/code]
敲一下回车以后的运行结果
[quote]
<lig@romeo:~/chinaunix>$ ./last

goes to here
[/quote]

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