【发布时间】:2011-03-17 16:05:39
【问题描述】:
我正在使用以下代码来解析相当大的 xml 文件(> 50GB):
use XML::Parser;
my $p = new XML::Parser(
'Handlers' => {
'Start' => \&handle_start,
'End' => \&handle_end,
'Char' => \&handle_char,
}
);
$p->parsefile( 'source.xml' );
...
sub handle_start {
...
}
问题是解析需要很长时间,我想获得某种进度表。
我更喜欢一种不需要首先扫描整个文件来获取总数的方法 - 例如,输入文件中的当前位置将是完美的,因为我可以简单地在开始时检查文件的总大小,然后在 handle_start() 中检查当前位置,并打印出来。
【问题讨论】: