博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
perl中foreach(二)
阅读量:5143 次
发布时间:2019-06-13

本文共 1021 字,大约阅读时间需要 3 分钟。

本文和大家重点讨论一下Perl foreach命令的用法,Perl foreach循环中控制变量的值会被Perl自动保存和恢复。当循环进行时,是没有办法改变其值的。循环结束时,变量的值会回到循环开始前,如果没有值则为undef。

Perl foreach用法

Perl foreach从列表(数组)的第一个元素一直循环执行到最后一个元素,一次迭代一个。控制变量(本例中为$rock)每一次迭代从列表中取出一个新值。第一次为“bedrock”,第三次为“lava”。控制变量不是这些列表元素中的一个拷贝而是这些元素本身。也就是说,如果在循环中修改这个变量,那原始列表中的元素也会被修改,如下面代码段所显示。这条性质是有用的,但是,如果不清楚,可能对其结果感到吃惊。

当循环结束时$rock的值为多少呢?其值同循环开始之前相同。Perl foreach循环中控制变量的值会被Perl自动保存和恢复。当循环进行时,是没有办法改变其值的。循环结束时,变量的值会回到循环开始前,如果没有值则为undef。这意味着如果有一个变量和控制变量有相同的名字:“$rock”,不用担心会混淆它们。

Perl中while和Perl foreach的区别

  1. while(defined($_=<STDIN>))  
  2. {  
  3. print“Isaw$_”;  

在列表context中使用行输入操作时,则会将所有的行(剩下的)当作一个列表,而每一行作为列表的一个元素:
 

  1. Perl foreach(<STDIN>)  
  2. {  
  3. print“Isaw$_”;  

同样,行输入操作和Perl的默认变量$_没有必然的联系。在上例中,Perl foreach默认的控制变量为$_。因此,此循环将每一行

赋给$_。

上面的看起来相似:好像有理由认为它们的行为也是相似的,不是吗?

它们在底层是很不相同的。在while循环中,Perl读入一行,将它赋给变量,然后进入循环。再回到开头,读入下一行。但
在Perl foreach循环中,由于行输入操作在列表的context中使用,因为Perl foreach需要一个列表作为其参数。因此,它在循环执行
前会将所有的输入读入。这种区别在读入一个400MB的web服务器的log文件时非常明显。通常使用while循环是一种更
好的方法,因为它一次处理一行输入。

转载于:https://www.cnblogs.com/chip/p/4188575.html

你可能感兴趣的文章
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
洛谷 P3237 [HNOI2014]米特运输
查看>>
Attributes.Add用途与用法
查看>>
JavaScript面向对象初探——封装和继承
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
OpenFire 的安装和配置
查看>>
ZJOI2018游记Round1
查看>>
侧边栏广告和回到顶部
查看>>
https://blog.csdn.net/u012106306/article/details/80760744
查看>>
ios应用版本号设置规则
查看>>
海上孤独的帆
查看>>
error: more than one device and emulator 问题解决
查看>>
Java基础:容器
查看>>
YUV摘要格式
查看>>
【方法2】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录
查看>>