Я использую следующий код для анализа довольно большого XML-файла (> 50 ГБ):
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 () проверьте текущую позицию и напечатайте ее.