数组:Foreach

时间:2013-03-07 03:36:49

标签: perl

我有以下内容:

my $v = "value";
my $v1 = "value";
my @v2 = ("v3", v4");

我怎样才能拥有包含v2,v1和v2元素的foreach?如下所示:

foreach my $element ($v, $v1, @v2) {
 # Do something with the element. 
}

基本上我希望它相当于

foreach my $element ($v, $v1, $v3, $v4) {

}

2 个答案:

答案 0 :(得分:1)

foreach my $element ($v, $v1, @v2) { ... }

相当于

foreach my $element ($v, $v1, $v2[0], $v2[1], ..., $v2[$#v2]) { ... }

这似乎正是你想要的。

答案 1 :(得分:0)

你的问题有点不清楚,但是 - 如果你的意思是:我有一个包含v,v1和v2 元素的foreach,那么这就是你要做的事情(用你的记法) ):

my $v = "value1";
my $v1 = "value2";
my @v2 = ("v3", "v4");

foreach my $element($v, $v1, @v2) {
    print $element . "\n";
}

这将为您提供输出:

value1
value2
v3
v4

这是如何工作的? foreach循环通过将控制变量(VAR)设置为列表的每个连续元素来迭代值列表:

foreach VAR (LIST) {
    ...
}

在您的情况下,控件变量名称为 $ element ,列表及其值为:($ v,$ v1,@ v2) - 或者, 更明确地(“value1”,“value2”,“@ v2 [0]”,“@ v2 [1]”) - 可以被认为是 - (但是,不是确实如下:(“value1”,“value2”,“v3”,“v4”)

根据ikegami的警告,FYI:如果修改循环中的$ element值,列表中保存的值将被修改。