1

基本的にスケジュールであるPerlで2D配列を初期化しようとしています。したがって、次のようになります。

Time     Mon   Tue   Wed   Thu   Fri
09:00     0     0     0     0     0  
10:00     0     0     0     0     0 
11:00     0     0     0     0     0 
12:00     0     0     0     0     0 
13:00     0     0     0     0     0 
14:00     0     0     0     0     0 
15:00     0     0     0     0     0 
16:00     0     0     0     0     0
17:00     0     0     0     0     0 
18:00     0     0     0     0     0 
19:00     0     0     0     0     0 
20:00     0     0     0     0     0 

Perlの2D配列に関するいくつかの記事を読みましたが、まだ混乱しています。これを行う最も簡単な方法は何ですか?そして、何が起こっているのかを理解できるように、少し説明してください。

4

1 に答える 1

3

を見てくださいperllol。Perlのリストのリストに最適なドキュメントです

基本的に、Perl配列の各要素は、任意のスカラー値(文字列または数値、あるいはサブルーチン参照やファイルハンドル参照などのよりエキゾチックなもの)にすることができます。2D配列を作成するには、配列の配列が必要なので、基本配列の各要素は配列参照である必要があります

[...]コンストラクトは匿名配列を作成し、その配列への参照を返します。匿名部分は、のように識別子が付加されていないことを意味します@dataが、メモリ内に存在し、参照を通じてアクセスできます

参照を介して配列の要素にアクセスするための構文は、たとえば、$array_ref->[0]最初の要素の場合です。だから私が書くなら

my $array_ref = [ '09:00', 0, 0, 0, 0, 0 ];
print $array_ref->[0];

09:00出力が表示されます

あなたのデータのために、あなたは書くことができます

my @data = (
  [ '09:00', 0, 0, 0, 0, 0 ],
  [ '10:00', 0, 0, 0, 0, 0 ],
  [ '11:00', 0, 0, 0, 0, 0 ],
  [ '12:00', 0, 0, 0, 0, 0 ],
  [ '13:00', 0, 0, 0, 0, 0 ],
  [ '14:00', 0, 0, 0, 0, 0 ],
  [ '15:00', 0, 0, 0, 0, 0 ],
  [ '16:00', 0, 0, 0, 0, 0 ],
  [ '17:00', 0, 0, 0, 0, 0 ],
  [ '18:00', 0, 0, 0, 0, 0 ],
  [ '19:00', 0, 0, 0, 0, 0 ],
  [ '20:00', 0, 0, 0, 0, 0 ],
);

したがって$data[0]、データの最初の行を保持する(匿名の)配列への参照であり$data[0]->[0]'09:00'

さらに、閉じ括弧と開き括弧の任意のペアの間の矢印を省略できる構文機能があるため、まったく同じ意味で$data[0]->[0]記述できます。$data[0][0]

于 2012-09-17T14:41:40.070 に答える