我是PERL的新手,我尝试在循环中获得以下结果:
# ResultFistStep.
$VAR1 = [
[
'Hello1'
],
[
'Hello2'
],
[
'Hello3'
],
];
但是,如果我使用InnerArray \@InnerArray
的引用:
# Example1
my @OuterArray;
my @InnerArray;
foreach(1,2,3)
{
@InnerArray[0] = "Hello" . $_;
push(@OuterArray, \@InnerArray);
}
print Dumper \@OuterArray;
...我得到这个结果:
$VAR1 = [
[
'Hello3'
],
$VAR1->[0],
$VAR1->[0]
];
如果我没有参考就尝试:
# Example2
my @OuterArray;
my @InnerArray;
foreach(1,2,3)
{
@InnerArray[0] = "Hello" . $_;
push(@OuterArray, @InnerArray);
}
print Dumper \@OuterArray;
..我得到以下结果:
$VAR1 = [
'Hello1',
'Hello2',
'Hello3'
];
但是我想要的是在开始处显示结果( ResultFistStep ),在结束时显示以下结果( ResultFinally ):
# ResultFinally
$VAR1 = [
[
'Hello1',
[
[],
[]
]
],
[
'Hello2',
[
[],
[]
]
],
[
'Hello3',
[
[],
[]
]
],
];
所以问题是:
可以请人帮我吗?我没看错。
答案 0 :(得分:0)
只需使用匿名数组:
my @outer;
push @outer, [ "Hello$_", [ [], [] ] ] for 1 .. 3;
甚至
my @outer = map [ "Hello$_", [ [], [] ] ], 1 .. 3;
如果要使用内部数组,请在循环内声明它,否则将一次又一次地重复使用同一数组:
my @outer;
for (1 .. 3) {
my @inner = ( "Hello$_", [ [], [] ] );
push @outer, \@inner;
}