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为什么可以逐一循环处理该目录中的所有文件呢? 展开
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为什么可以逐一循环处理该目录中的所有文件呢? 展开
4个回答
展开全部
perldoc -f wantarray
perl 里面有这麼个东西, 可以知道你想要回传的是甚麼.
这就是为甚麼当你打开一个文件句柄後
@lines = <FH> 时可以将整个档案以 array 形式回传给你,
但 $line = <FH> 时只回传一行给你.
当是 foreach 时, wantarray 就会成立. 所以会将所有档案以 array 回传
当是 while ( $line ... ) 时, wantarray 就不成立, 所以只传 1 个档给你
注: 请及时采纳, 否则以後也不答你问的问题
perl 里面有这麼个东西, 可以知道你想要回传的是甚麼.
这就是为甚麼当你打开一个文件句柄後
@lines = <FH> 时可以将整个档案以 array 形式回传给你,
但 $line = <FH> 时只回传一行给你.
当是 foreach 时, wantarray 就会成立. 所以会将所有档案以 array 回传
当是 while ( $line ... ) 时, wantarray 就不成立, 所以只传 1 个档给你
注: 请及时采纳, 否则以後也不答你问的问题
展开全部
这个就相当与读文件的时候
比如:
open IN,"test.txt";
my @array = <IN>; #111111
while(<IN>){ #222222
}
这里的情况1和情况2 和你说的类似 对比着就好理解了
比如:
open IN,"test.txt";
my @array = <IN>; #111111
while(<IN>){ #222222
}
这里的情况1和情况2 和你说的类似 对比着就好理解了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我要说都是 你信么?同一个函数,在不同的环境下(标量或列表),可以返回不同的东东!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该不是标量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询