ITPub博客

首页 > Linux操作系统 > Linux操作系统 > perl中while和foreach的区别

perl中while和foreach的区别

原创 Linux操作系统 作者:casper0511 时间:2009-05-11 23:25:25 0 删除 编辑
while (defined($_ = ))
{
print “I saw $_”;
}
在列表context 中使用行输入操作时,则会将所有的行(剩下的)当作一个列表,而每一行作为列表的一个元素:
foreach()
{
print “I saw $_”;
}
同样,行输入操作和Perl 的默认变量$_没有必然的联系。在上例中,foreach 默认的控制变量为$_。因此,此循环将每一行
赋给$_。
上面的看起来相似:好像有理由认为它们的行为也是相似的,不是吗?
它们在底层是很不相同的。在while 循环中,Perl 读入一行,将它赋给变量,然后进入循环。再回到开头,读入下一行。但
在foreach 循环中,由于行输入操作在列表的context 中使用,因为foreach 需要一个列表作为其参数。因此,它在循环执行
前会将所有的输入读入。这种区别在读入一个400MB 的web 服务器的log 文件时非常明显。通常使用while 循环是一种更
好的方法,因为它一次处理一行输入。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11517198/viewspace-594793/,如需转载,请注明出处,否则将追究法律责任。

上一篇: optimizer_mode详解
下一篇: [转]crontab用法
请登录后发表评论 登录
全部评论

注册时间:2008-12-08

  • 博文量
    34
  • 访问量
    69438