从/到同一文件逐行读写

时间:2013-05-16 12:32:43

标签: perl

我正在处理我需要在脚本中操作的xml文件。我的第一个方法是:

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);

这是出于测试目的,但不幸的是真实文件太大了(最多6GB)。

有没有办法逐行读取文件,然后通过文件句柄修改输入?像

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

我无法在非荒谬的时间里测试它,所以如果我不必在这里试错,那就太好了。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这应该有效。不需要另一个脚本文件。

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

虽然没有测试高达6GB的巨大文件。测试一下并检查需要多长时间。