4

我正在使用需要在脚本中操作的 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', $_);
}

我无法在不荒谬的时间内真正测试它,所以如果我不必在这里反复试验,那就太好了。

提前致谢!

4

1 回答 1

0

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

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

虽然没有使用高达 6GB 的大文件进行测试。对此进行测试并检查需要多少时间。

于 2013-05-16T13:03:32.250 回答