你似乎不知道重複操作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"
在(@param) x ...
的括號是不可選的,否則,該x
確實串的重複,這在標量環境評估@param
,給長度(結果:2222
)。
問題在代碼是$self->{mpaParam}
モ數組引用,不是陣列。將它分配給一個數組會導致一個數組在第一個字段中包含一個數組引用。您需要提領的數組引用:
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
後面的parens包含一個列表;在這種情況下,範圍從1
到$ParamRepeat
。在Perl中,關鍵字for
和foreach
沒有實際差異。
的
X for 1 .. $n;
可以讀「$n
次,做X
」。