我對Perl相當陌生,最近生成了下面這段代碼。我已經對它進行了廣泛的測試,並且返回了期望的結果。然而,我只是想知道有更多Perl經驗的人是否可以爲我提供可用性方面的建議。用Perl聲明變量循環
基本上,我已經在for循環中用'my'關鍵字聲明瞭一個數組變量。然後,我在另一個數組變量中使用這個聲明的數組變量的地址,該數組變量已在前面提到的for循環之前聲明。基本的代碼結構如下所示:
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「替代@Array_of_ALL_Vals;'在循環之後。 –
請注意@Сухой27的評論 - 這是一個很好的問題,但是你可以自己弄明白。 – zdim
謝謝...我會測試它。 – gauss76