我有以下内容:
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) {
}
答案 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值,列表中保存的值将被修改。