2013-05-16 6 views
4

스크립트에서 조작해야하는 xml 파일을 사용하고 있습니다. 이에 대한 나의 첫 번째 방법은 :이 테스트 목적으로하고있다,하지만 불행히도 실제 파일 (6기가바이트까지) 그 단지 너무 큰동일한 파일에서 한 줄씩 읽거나 쓰는 것

qx(perl export_xml.pl $export_params > $path$prefix\investment.xml); # Create the xml-file 


open DERI, '+<'.$path.$prefix.'investment.xml' or die 'Can\'t open investment.xml: '.$!;  
my @derivative_xml = <DERI>; 
seek(DERI, 0, 0); 

foreach (@derivative_xml) { 
    $_ =~ s/^\s*$//g; 
    $_ =~ s/^.*detected on Server.*$//g; 
    $_ = encode('utf8', $_); 
} 

print DERI join('', @derivative_xml); 

.

줄 단위로 파일을 읽고 파일 핸들을 통해 입력을 수정하는 방법이 있습니까?

foreach (<DERI>) { #@derivative_xml) { 
    $_ =~ s/^\s*$//g; 
    $_ =~ s/^.*detected on Server.*$//g; 
    $_ = encode('utf8', $_); 
} 

같은 뭔가 정말 시간이 아닌 말도 안되는 금액에 그것을 테스트 할 수 없습니다, 그래서 여기 시행 착오를하지 않은 경우는, 아주 좋은 것입니다.

미리 감사드립니다.

+0

xml 파일을 변경해야하는 이유를 알려주십시오. 정말 수정 된 파일을 만드는 것이 더 좋을지도 모릅니다. "출력"파일? – gaussblurinc

+0

'Tie :: File'을 사용하십시오. –

답변

0

이렇게하면됩니다. 다른 스크립트 파일이 필요 없습니다.

perl -pi -e 's/^\s*$//g;s/^.*detected on Server.*$//g;$_ = encode('utf8', $_)' investment.xml 

거대한 파일을 최대 6GB까지 테스트하지 않았습니다. 이것을 시험하고 소요 시간을 확인하십시오.

+0

감사합니다. 나는 하룻밤 사이에 스크립트를 실행하고 내일 업데이트 할 예정입니다. – Vince

+0

감사합니다! – Vince

+0

BTW에 얼마나 걸렸습니까? – Vijay

관련 문제