perl语言中while和foreach的区别

opendirmy$dh,'C:\test';foreach$file_name(readdir$dh){print"Thefilenameis$file_name\n"... opendir my $dh, 'C:\test';
foreach $file_name( readdir $dh){
print "The file name is $file_name\n";
}
closedir $dh;
===========================
my $dir= 'C:\test';
opendir $dh , $dir or die "Can not cause: $!";
while ($name = readdir $dh){
print $name."\n";}

这两段代码中的foreach $file_name( readdir $dh)和while ($name = readdir $dh)
都有的readdir $dh到底是标量还是列表呢?

如果readdir $dh是标量while为什么可以逐一循环处理该目录中的所有文件呢?
展开
 我来答
百度网友c9e795dda
2012-11-28 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1138万
展开全部
perldoc -f wantarray

perl 里面有这麼个东西, 可以知道你想要回传的是甚麼.
这就是为甚麼当你打开一个文件句柄後
@lines = <FH> 时可以将整个档案以 array 形式回传给你,
但 $line = <FH> 时只回传一行给你.

当是 foreach 时, wantarray 就会成立. 所以会将所有档案以 array 回传
当是 while ( $line ... ) 时, wantarray 就不成立, 所以只传 1 个档给你

注: 请及时采纳, 否则以後也不答你问的问题
achenge07
2012-11-28 · TA获得超过158个赞
知道答主
回答量:205
采纳率:0%
帮助的人:86.6万
展开全部
这个就相当与读文件的时候
比如:
open IN,"test.txt";
my @array = <IN>; #111111
while(<IN>){ #222222
}
这里的情况1和情况2 和你说的类似 对比着就好理解了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
super1in1in
2012-11-28 · 超过17用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:45.4万
展开全部
我要说都是 你信么?同一个函数,在不同的环境下(标量或列表),可以返回不同的东东!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
arongustc
科技发烧友

2012-11-28 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5825万
展开全部
应该不是标量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式