대용량 파일 (> 10GB)을 읽고 배열의 데이터를 해당 파일의 각 행 끝에 쓰도록 스크립트를 작성하고 있습니다. 여기에 내 코드각 열의 데이터를 읽고 마지막으로 perl 행에 인쇄하십시오.
my $count=0;
while(my $lines = <$FILE>){
seek $FILE, length($lines), 1;
print $FILE "\t", $array[$count];
$count++;
}
입니다하지만 난 방법을 모색하여 행의 끝을 찾는 틀렸다 생각합니다. 나는이 문제를두고 머리를 맞출 수가 없었다. 누구든지이 코드에서 잘못된 점을 볼 수 있습니까? 처리 후의
my 1st line
my 2nd line
my 3rd line
....
my 1st line data1
my 2nd line data2
my 3rd line data3
DATA1, DATA2, ... DATA3 처리 전에 @array에있다. 코드에
세부 사항 :
- FILE이 + < 모드 (읽기/쓰기)에서 열이
- FILE 라인은 탭으로 구분됩니다.
- @array가 data1,2을 보유하고 ...
문제 : 각 라인의
감사를 종료 포인터를 이동
- ,
로빈
왜 각 행에 데이터를 추가하여 새 파일을 만들지 않으십니까? – Kenosis
인쇄하는 데이터는 "삽입"되어 있지 않습니다. 이미 존재하는 것은 무엇이든 덮어 씁니다. 고정 길이 레코드가있는 2 진 파일에서는 괜찮을 수 있습니다. 귀하의 경우 현재 데이터 (줄 바꿈 포함)를 덮어 쓰는 것 같습니다. 두 번째 파일을 작성하는 것이 더 쉬울 것입니다. – rutter
제안에 감사드립니다 _ @ Kenosis_ & _ @ rutter_. 여기서 문제는 필자가 작성한 파일에는 빈 파일부터 시작할 수 있지만 수백만 줄의 줄과 1000 줄의 줄이 있다는 것입니다. 모든 데이터 배열에 대해 파일을 작성해야합니다 (행 * cols) 번. 이것은 성능 병목 될 것입니다. 그래서 성능을 최적화하기 위해 다른 방법으로이 작업을 수행하려고합니다. _ @ Borodin_ 제안을 시도하고 곧 스레드를 업데이트합니다 !! – Robin