Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 数组:Foreach_Perl - Fatal编程技术网

Perl 数组:Foreach

Perl 数组:Foreach,perl,Perl,我有以下资料: 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 $elem

我有以下资料:

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[0], $v2[1], ..., $v2[$#v2]) { ... }

这似乎正是您想要它做的。

但是,您的问题有点不清楚-如果您的意思是:我有一个foreach,它将包含v、v1和v2的元素,那么这就是您要做的(用您的符号):

这将为您提供以下输出:

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值,列表中的值将依次被修改。

您尝试过吗?当我执行perl-e'@v=(4,5,6)时;对于每个$i(1,2,3,@v){printf(“%d”,$i)}我得到了
123456
作为我的输出,正如预期的那样。该代码中没有
$v3
$v4
。你的意思是
$v2[0]
$v2[1]
?@ikegami,我认为他的意思是“v3”和“v4”-因为数组v2的值没有完全引用转义,这意味着数组v2的元素只是:(“v3”,“v4”)。我就是这么认为的——但是,我可能错了。@jrd,我很确定他指的是
@v2
,而不是
“v3”
“v4”
@ikegami,正确——根据第一个代码示例中v2的定义——其中包含“v3”和“v4”。与我的$element(“value1”、“value2”、“v3”、“v4”)的
不太一样。考虑一下当你改变代码的值时,会发生什么?$元素< /代码>。@ IKGAMI,同意,但是,如果他想修改这些值,那么这是另一个答案,IMO.,我没有警告任何东西。我只是说你所说的两件事并不完全相同。@ikegami,好吧。这是关于我的$element…
与我的$element…
的对比吗?如果是这样,则根据标准,它们是等效的。如果不是,您指的是什么?
$v、$v1、@v2
vs
“value1”、“value2”、“v3”、“v4”
value1
value2
v3
v4
foreach VAR (LIST) {
    ...
}