perl代码中的实时戳

时间:2015-12-17 07:05:46

标签: perl timestamp

这是我的perl代码段

//...
case .Success(let result):
    switch self {
        case is MOProject:
            Mapper<MOProject>().map(result)
            completion(result: Result(success:"dd"))
        case is MOOrganization:
            Mapper<MOOrganization>().map(result)
            completion(result: Result(success:"dd"))
    }
case .Failure( _):
    //...

我正在将tail -f的输出从文件解析为我的perl代码,我真的很想获得实际的时间戳,目前有些执行if($line =~ m/^Warning: (.*)$/){ $subStepValues = { Warning => $1, Warning_timeStamp => `date`, }; push @{$subsSteps->{'subStepValues'}}, $subStepValues; } 的工作方式不正常 还有其他更好的建议吗?

1 个答案:

答案 0 :(得分:2)

一个漂亮的ISO时间戳怎么样?

use POSIX qw(strftime);

if ($line =~ m/^Warning: (.*)$/)
{
    $subStepValues = {
      Warning => $1,
      Warning_timeStamp => strftime("%Y-%m-%dT%H:%M:%S", localtime),
    };
    push @{$subsSteps->{'subStepValues'}}, $subStepValues;
}

这是一个简单的概念验证,从命令行使用一个空文件并在其上运行tail -f然后转到另一个终端并以echo something >> log

的方式向其添加几行
schumack@daddyo2 12-18T1:57:23 338> touch log
schumack@daddyo2 12-18T1:57:26 339> tail -f log | perl -lne 'BEGIN{use POSIX qw(strftime);}chomp; printf "%s -- %s\n", strftime("%Y-%m-%dT%H:%M:%S", localtime), $_;'
2015-12-18T01:57:40 -- hello
2015-12-18T01:57:46 -- line 2
2015-12-18T01:57:50 -- line 3