如何使用Perl计算XML文件中的暂停间隔

时间:2013-09-19 05:17:04

标签: xml perl

我有一个包含以下信息的XML文件:

<Key Time="54288" Type="insert" Value="E" />

<Key Time="55288" Type="insert" Value="A" />

<Key Time="58298" Type="insert" Value="O" />

我需要计算每个Key条目之间的总暂停持续时间,但仅在暂停时(一个“Time”和另一个之间的间隔)等于或高于2400.有人可以帮我使用Perl脚本是什么?

2 个答案:

答案 0 :(得分:3)

使用xshXML::LibXML的包装:

open data.xml ;
for //Key[preceding-sibling::Key] {
    $pause = @Time - preceding-sibling::Key[1]/@Time ;
    if ($pause >= 2400) echo $pause ;
}

输出:

3010

答案 1 :(得分:0)

这个&#34;单行&#34;

怎么样?
perl -nle '
   /<Key +Time\s*=\s*"([0-9]+)\s*"/ and push @nums,$1; 
   END{ 
       for(1..$#nums){ 
           $pause=$nums[$_]-$nums[$_-1];
           $pause >=2400 ? print "$pause started at ".$nums[$_-1] : ()
       }
   }' your_file_here > output_file

这会将程序的输出保存到文件output_file中。您可以使用任何电子表格软件打开此文件,它会自动知道将输出放在一个表格列中。