我正在处理我需要在脚本中操作的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', $_);
}
我无法在非荒谬的时间里测试它,所以如果我不必在这里试错,那就太好了。
提前致谢!
答案 0 :(得分:0)
这应该有效。不需要另一个脚本文件。
perl -pi -e 's/^\s*$//g;s/^.*detected on Server.*$//g;$_ = encode('utf8', $_)' investment.xml
虽然没有测试高达6GB的巨大文件。测试一下并检查需要多长时间。