2009-07-11 5 views
4

2 차원 배열이 있습니다. 내가 인쇄/때 나는 다음과 같은 얻을이 덤프어떻게 Perl에서 2 차원 배열을 인쇄 할 수 있습니까?

내 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] 
     ]; 

배열의 두 번째 행되어야한다 배열의 첫 번째 행에 있어야합니다 I 다음 코드로 인쇄하십시오.

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

다음과 같은 오류 메시지가 나타납니다. 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

그래서 나는 파고 들었다. 내 매트릭스는 그것에 배열 참조를 pusshing하여 형성되고있다. 어레이가 루프에서 순차적으로 푸시되면 데이터가 복제됩니다. 하지만 @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

뭔가를 버렸습니다. 두 개의 배열 참조를 추가하지만 덤프는 그 이상을 명확하게 보여줍니다. – Bill

+0

@Bill, 나는 당신이 질문을 쓴 '롭'에게 말하고 있다고 생각한다. – 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으로 항상 평가하는 것입니다 귀하의 출력을 생성 : 은 어쩌면 당신은 같은 것을 사용했다.

관련 문제