perl 拆分以获取字符串中的时间
perl split to grab time in the string
目前我们有一个共享软件,脚本的目的是收集每个用户的所有使用时间。为此,我想按用户查找日志文件并获取记录 运行 时间的行并将其添加到每个用户的最终数字。
- 代码是用 Perl 编写的。
- 我将所有用户 ID 保存在一个文件中,比如用户列表
在一个循环中,为每个用户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 time\s+(?:(\d+):)?(\d+(?:\.\d+)?)/g) {
$secs += *60 if ;
$secs += ;
}
目前我们有一个共享软件,脚本的目的是收集每个用户的所有使用时间。为此,我想按用户查找日志文件并获取记录 运行 时间的行并将其添加到每个用户的最终数字。
- 代码是用 Perl 编写的。
- 我将所有用户 ID 保存在一个文件中,比如用户列表
在一个循环中,为每个用户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 time\s+(?:(\d+):)?(\d+(?:\.\d+)?)/g) {
$secs += *60 if ;
$secs += ;
}