2009-07-11 10 views
4

私は2次元の配列を持っています。 I印刷/時、私は、次の取得、このダンプ2次元配列をPerlで印刷するにはどうしたらいいですか?

マイ2薄暗い配列:

push (@matrix, \@a1Comparea2); 
push (@matrix, \@a3Comparea4); 

a1Comparea2が a3Comparea4は

$VAR1 = [ 
      [ 
      '1 6', 
      '2 7', 
      '3 8', 
      '4 9', 
      '5 10' 
      ], 
      $VAR1->[0], 
      $VAR1->[0], 
      $VAR1->[0], 
      $VAR1->[0], 
      [ 
      '7 12', 
      '8 13', 
      '9 14', 
      '10 15', 
      '11 16' 
      ], 
      $VAR1->[5], 
      $VAR1->[5], 
      $VAR1->[5], 
      $VAR1->[5] 
     ]; 

アレイの第2行であるべきである配列の最初の行であるべきであるI次のコードでこれを印刷してください:

for (my $j= 0; $j < $rows; $j++) 
{ 
     for (my $k= 0; $k < @a1; $k++) 
     { 
       print "Row:$j Col:$k = $matrix[$j][$k]\n"; 
     } 
} 

私は以下のou tput:

Row:0 Col:0 = 1 6 
Row:0 Col:1 = 2 7 
Row:0 Col:2 = 3 8 
Row:0 Col:3 = 4 9 
Row:0 Col:4 = 5 10 
Row:1 Col:0 = 1 6 
Row:1 Col:1 = 2 7 
Row:1 Col:2 = 3 8 
Row:1 Col:3 = 4 9 
Row:1 Col:4 = 5 10 

ご覧のとおり、データは重複しています。

+0

"$ VAR - > [0]"と$ VAR - > [5]という行列を構成する要素は、データ構造内に同じものが複数存在するというData :: Dumperの方法です。より初期のコードを投稿すると役立つかもしれません。 a1Comparea2はどのように定義されていますか? –

+0

だから私は掘り起こした。私の行列は、配列参照をその配列にプッシュすることによって形成されています。配列がループ内で順番にプッシュされると、データは複製されます。しかし、@matrix =(\ @ array1、\ @ array2)を宣言すると、すべてが問題ありません。それがなぜあるのか知っていますか? –

+0

あなたのループを教えてください。 – dave4420

答えて

3

配列が正しく定義されていますか?
配列には@、スカラーには$を使用します。
これをチェックしてくださいarticle for a quick reference


この記事ではこの簡単な例を挙げています。

@matrix = (
     [3, 4, 10], 
     [2, 7, 12], 
     [0, 3, 4], 
     [6, 5, 9], 
    ); 

これは、4行3列の配列を作成します。配列の要素を印刷するには、次のように入力します。

for($row = 0; $row < 4; $row++) { 
    for($col = 0; $col < 3; $col++) { 
     print "$matrix[$row][$col] "; 
    } 
    print "\n"; 
} 
+0

ダンプが示すように、私の行列は正しく定義されています。私は行列がどのように定義されているかを示すために質問を更新しました。 –

+0

あなたは何かを残しました。 2つの配列参照を追加しますが、ダンプにはそれ以上のものがはっきりと表示されます。 – Bill

+0

@Bill、私はあなたが質問を書いた 'rob'に対処していると思います。 – nik

1

上記のコードを使用してもよろしいですか? はたぶん、あなたは次のようなものを使用:

for (my $j= 0; $j < $rows; $j++) 
{ 
     for (my $k= 0; $k < @a1; $k++) 
     { 
       print "Row:$j Col:$k = $matrix[$not_j][$k]\n"; 
     } 
} 

$not_jあなたの出力を生成する、0に常に評価されます。

関連する問題