曲径通幽论坛

标题: 使用 foreach 遍历列表和数组 [打印本页]

作者: beyes    时间: 2011-9-21 15:38
标题: 使用 foreach 遍历列表和数组
可以使用 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 就会逐个遍历其中元素并输出。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2