Perl 拆分以在字符串中抓取时间



当前我们有一个共享软件,脚本的目的是收集每个用户的所有使用时间。为此,我想按用户查找日志文件,并获取记录运行时间的行,并将其添加到每个用户的最终数字中。

  1. 代码是用Perl编写的。
  2. 我把所有用户ID保存在一个文件中,比如用户列表
  3. 在循环中,为每个用户 id 获取所有与时间相关的行并保存在一个变量中。

    my $output = `find / -name "$userID" -print0 | xargs -0 grep 'running time' ` ; 
    

$output中的内容如下所示:

logPath:Time INFO  [XXX] :user -       running time           1.75 seconds
logPath:Time INFO  [XXX] :user -       running time           0.34 seconds
logPath:Time INFO  [XXX] :user -       running time           21.15 seconds
logPath:Time INFO  [XXX] :user -       running time           43:10.83
logPath:Time INFO  [XXX] :user -       running time           10:50.77

我的问题是:我应该如何编写 split 函数或使用其他方法来总结这些时间? 43:10.83 是 43 分 10.83 秒。

my $secs = 0;
while ($output =~ /running times+(?:(d+):)?(d+(?:.d+)?)/g) {
    $secs += $1*60 if $1;
    $secs += $2;
}

最新更新