Perl에서 다차원 배열을 어떻게 만들 수 있습니까?
-
11-07-2019 - |
문제
나는 Perl에 조금 새로운 것이지만 여기에 내가하고 싶은 일이 있습니다.
my @array2d;
while(<FILE>){
push(@array2d[$i], $_);
}
이후로 컴파일하지 않습니다 @array2d[$i]
배열이 아니라 스칼라 값입니다.
@array2d를 배열 배열로 어떻게 선언해야합니까?
물론, 나는 내가 얼마나 많은 행을 가지고 있는지 전혀 모른다.
해결책
배열 배열 또는 더 정확하게 배열 배열을 만들려면 다음과 같은 것을 시도하십시오.
my @array = ();
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
push @{ $array[$i] }, $j;
}
}
그것은 당신을 위해 값을 불쾌한 배열로 밀어 넣습니다. 다음과 같은 항목에 액세스 할 수 있어야합니다.
print $array[3][2];
다른 팁
"푸시"라인을 이것으로 변경하십시오.
push(@{$array2d[$i]}, $_);
당신은 기본적으로 @{}에 의해 주변을 둘러싼 배열을 $ array2d [$ i]를 만들고 있습니다. 그러면이 배열의 배열에 요소를 푸시 할 수 있습니다.
당신이 쓴 것과 이것 사이에는 실제로 차이가 없습니다.
@{$array2d[$i]} = <FILE>;
파일을 통해 반복한다고 가정 할 수 있습니다.
카운터를 추적하지 않으려면 다음을 수행 할 수 있습니다.
...
push @array2d, [ <FILE> ];
...
1) 빈 배열에 대한 참조를 작성하고, 2) 모든 줄을 파일에 저장, 3) 밀어 넣습니다. @array2d
.
또 다른 간단한 방법은 해시 테이블을 사용하고 두 배열 지수를 사용하여 해시 키를 만드는 것입니다.
$two_dimensional_array{"$i $j"} = $val;
배열에 파일을 저장하려는 경우 다음을 수행 할 수도 있습니다.
fopen(FILE,"<somefile.txt");
@array = <FILE>;
close (FILE);
제휴하지 않습니다 StackOverflow