您似乎x
还不知道重复运算符:
my @params = qw(A B);
my $param_repeat = 4;
@params = (@params) x $param_repeat;
say "@params"; # "A B A B A B A B"
括号 at(@param) x ...
不是可选的,否则是x
字符串重复,它@param
在标量上下文中评估,给出长度(结果:)2222
。
您的代码中的问题是$self->{mpaParam}
包含数组引用,而不是数组。将其分配给数组会生成一个数组,该数组在第一个字段中保存数组引用。您需要取消引用arrayref:
my @Params = @{ $self->{mpaParam} };
是@{ ... }
数组取消引用运算符。然后你的代码也可以工作,虽然我会把循环写得更简单一些:
push @paParam, @{ $self->{mpaParam} } for 1 .. $ParamRepeat;
请注意,我不使用中间@Params
变量,而是使用foreach
循环作为语句修饰符(即在语句之后)。它相当于
for (1 .. $ParamRepeat)
push @paParam, @{ $self->{mpaParam} };
}
这种类型的循环是一个 foreach 循环,与 C 风格的for (X;Y;Z) { ... }
循环不同。对于 foreach 循环,for
保持列表后的括号;在这种情况下,范围从1
到$ParamRepeat
。在 Perl 中,关键字for
和foreach
没有实际的区别。
这
X for 1 .. $n;
可以读“<code>$n 次,做X
”。