我对Perl还比较陌生,最近写了下面的代码。我已经进行了广泛的测试,并且它返回了期望的结果。但是,我想知道更有经验的Perl开发者对其可用性是否有建议。
基本上,我在for循环内使用了'my'关键字声明了一个数组变量。然后,我在前面声明的另一个数组变量中使用了此声明的数组变量的地址。基本代码结构如下:
my @Array_of_ALL_Vals;
for my $iloop (0 .. 10){
my @Array_Vals;
.
Code in here to populate @Array_of_Vals
.
push @Array_of_ALL_Vals,\@Array_Vals;
}
@Array_Vals变量的大小通常每次都不同。此外,在循环内部定义的@Array_Vals数组在代码中没有任何其他使用,且只存在于for循环内部。
我关注的是for循环内部数组的声明。即使每次变量的名称相同,我假设对于每次循环迭代,它都会被分配到不同的内存地址。这个假设是否正确?
我认为最好在for循环内部将数组名称添加一个增量,以便每次名称都不同(@Array_Vals1,@Array_Vals2,...)。然后,我可以将这些值推入@Array_of_ALL_Vals数组,并确信最终数组的值不会被覆盖。但是,经过一些搜索,我发现这种方法是不被鼓励的(变量名包含变量)。
因此,我的问题是:我使用相同的数组名称进行每次循环迭代,然后将该数组的地址附加到新数组(@Array_of_ALL_Vals)中的方法有效吗?还是说,循环数组(@Array_Vals)不断被重写会破坏我所有迭代完成后的@Array_of_ALL_Vals数组(其中包含@Array_Vals数组的地址)的有效性?
非常感谢您的评论
Gauss76
print \@Array_Vals, "\n";
和循环后的print "$_\n" for @Array_of_ALL_Vals;
。 - mpapec