我有以下内容:
my $v = "value";
my $v1 = "value";
my @v2 = ("v3", v4");
我怎样才能拥有一个包含 v、v1 和 v2 元素的 foreach?类似于:
foreach my $element ($v, $v1, @v2) {
# Do something with the element.
}
本质上我希望它相当于
foreach my $element ($v, $v1, $v3, $v4) {
}
我有以下内容:
my $v = "value";
my $v1 = "value";
my @v2 = ("v3", v4");
我怎样才能拥有一个包含 v、v1 和 v2 元素的 foreach?类似于:
foreach my $element ($v, $v1, @v2) {
# Do something with the element.
}
本质上我希望它相当于
foreach my $element ($v, $v1, $v3, $v4) {
}
foreach my $element ($v, $v1, @v2) { ... }
相当于
foreach my $element ($v, $v1, $v2[0], $v2[1], ..., $v2[$#v2]) { ... }
这似乎正是您想要的。
但是,您的问题有点不清楚-如果您的意思是:我有一个 foreach 将包含 v, v1 和 v2 的元素,那么这就是您要做的(用您的符号表示):
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 的警告,仅供参考:如果您在循环中修改 $element 值,则列表中保存的值将依次被修改。