perl拆分以获取字符串中的时间

perl拆分以获取字符串中的时间,perl,split,Perl,Split,目前我们有一个共享软件,脚本的目的是收集每个用户的所有使用时间。为此,我希望按用户查找日志文件,获取记录运行时间的行,并将其添加到每个用户的最终数字 代码是用Perl编写的 我把所有的userid保存在一个文件中,比如userlist 在循环中,为每个用户标识获取所有与时间相关的行并保存在一个变量中 my $output = `find / -name "$userID" -print0 | xargs -0 grep 'running time' ` ; $output中的内容如下: l

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

  • 代码是用Perl编写的
  • 我把所有的userid保存在一个文件中,比如userlist
  • 在循环中,为每个用户标识获取所有与时间相关的行并保存在一个变量中

    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
    

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

    split
    最好在每行有固定数量的字段时使用。你不在这里。正则表达式更好。
    my $secs = 0;
    while ($output =~ /running time\s+(?:(\d+):)?(\d+(?:\.\d+)?)/g) {
        $secs += $1*60 if $1;
        $secs += $2;
    }