Foreach 从列表(数组)的第一个元素一直循环执行到最后一个元素,一次迭代一个。控制变量(本例中为$rock)每一次迭代从列表中取出一个新值。第一次为 “ bedrock” ,第三次为 “ lava” 。控制变量不是这些列表元素中的一个拷贝而是这些元素本身。
也就是说,如果在循环中修改这个变量,那原始列表中的元素也会被修改,如下面代码段所显示。这条性质是有用的,但是,如果不清楚,可能对其结果感到吃惊。
当循环结束时$rock 的值为多少呢?其值同循环开始之前相同。foreach 循环中控制变量的值会被 Perl 自动保存和恢复。当循环进行时,是没有办法改变其值的。循环结束时,变量的值会回到循环开始前,如果没有值则为 undef。这意味着如果有一个变量和控制变量有相同的名字:“ $rock” ,不用担心会混淆它们。 Code:
#!/usr/bin/perl
foreach $rock(qw/ bedrock slate lava/){
print "One rock is $rock.\n";
}
$rock = "black rock";
@rocks=qw/bedrock slate lava/;
foreach$rock(@rocks){
$rock = "\t$rock";
$rock .= "\n";
}
print "The rocks are:\n",@rocks;
print "The rock is: $rock\n";
Output
One rock is bedrock.
One rock is slate.
One rock is lava.
The rocks are:
bedrock
slate
lava
The rock is: black rock
当循环结束时$rock 的值为多少呢?其值同循环开始之前相同。foreach 循环中控制变量的值会被 Perl 自动保存和恢复。当循环进行时,是没有办法改变其值的。循环结束时,变量的值会回到循环开始前,如果没有值则为 undef。这意味着如果有一个变量和控制变量有相同的名字:“ $rock” ,不用担心会混淆它们。 Code:
#!/usr/bin/perl
foreach $rock(qw/ bedrock slate lava/){
print "One rock is $rock.\n";
}
$rock = "black rock";
@rocks=qw/bedrock slate lava/;
foreach$rock(@rocks){
$rock = "\t$rock";
$rock .= "\n";
}
print "The rocks are:\n",@rocks;
print "The rock is: $rock\n";
Output
One rock is bedrock.
One rock is slate.
One rock is lava.
The rocks are:
bedrock
slate
lava
The rock is: black rock
本文详细介绍了 Perl 中 Foreach 循环的基本用法及其特性。解释了如何使用 Foreach 对列表进行迭代,并展示了在循环过程中修改列表元素的效果。同时,文章还探讨了循环变量的值在循环前后是如何被自动保存和恢复的。
2102

被折叠的 条评论
为什么被折叠?



