私はかなり新しい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" for @Array_of_ALL_Vals; 'に入れてください。 –
@Сухой27のコメントにご注意ください - これは良い質問ですが、あなた自身で把握することができます。 – zdim
ありがとう...私はそれをテストします。 – gauss76