曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 10631|回复: 0
打印 上一主题 下一主题

使用 foreach 遍历列表和数组

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-9-21 15:38:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
可以使用 foreach 方便的遍历整个数组或列表。

测试代码:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl

$val = 10;
$var = 20;

#遍历列表
foreach $val (qw/welcome to groad net/) {
        print "$val     ";
}

print "\nval is $val\n";

#遍历数组
@array = qw{welcome to groad net};
foreach $var (@array) {
        print "$var     ";
}
print "\nvar is $var\n";

运行输出:
./foreach.pl
welcome to      groad   net
val is 10
welcome to      groad   net
var is 20
上面程序中注意到一点,在 foreach 中使用的 $var 和 $val 两个变量都曾经定义过,然而在迭代完后,$var 和 $val 并没有被覆盖,而是保持原来所定义的值。


比较例一:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl

foreach (<STDIN>) {
        print "I saw $_";
}

运行输出:
./input.pl
hello
world
perl
world
I saw hello
I saw world
I saw perl
I saw world
首先需要说明的是,这里的 <STDIN> 和 $_ 没有任何关系。Perl 是这样处理的:foreach 遍历的是一个列表,因此在循环开始执行之前,它必须先将输入全部读进来,而这个列表的内容来自标准输入 <STDIN> ,所以当输入若干行并按下 ctrl+d 结束输入后,之前的输入会存储在一个列表中,这时候 foreach 就会逐个遍历其中元素并输出。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 11:17 , Processed in 0.064893 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表