Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl代码中的实时戳_Perl_Timestamp - Fatal编程技术网

perl代码中的实时戳

perl代码中的实时戳,perl,timestamp,Perl,Timestamp,下面是我的perl代码片段 if($line =~ m/^Warning: (.*)$/){ $subStepValues = { Warning => $1, Warning_timeStamp => `date`, }; push @{$subsSteps->{'subStepValues'}}, $

下面是我的perl代码片段

if($line =~ m/^Warning: (.*)$/){
                $subStepValues = {
                    Warning => $1,
                    Warning_timeStamp => `date`,
                };
                push @{$subsSteps->{'subStepValues'}}, $subStepValues;
}
我正在将tail-f的输出从一个文件解析到我的perl代码中,我真的很有兴趣获得实际的运行时间戳,目前执行
date
是如何不起作用的
还有更好的建议吗?

一个漂亮的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

仅供参考,您可以将该格式字符串缩短为
“%FT%T”
。但是,
%F
选项并非在所有平台上都可用。@Ken Schumack我得到以下错误用法:POSIX::strftime(fmt,sec,min,hour,mday,mon,year,wday=-1,yday=-1,isdst=-1)在watcher_instance_8.pl第229行,第106行。Hi@Shantesh您在调用strftime()时使用了localtime吗?localtime实际上是一个Perl函数,不是我编的变量。我可能应该使用
localtime()
更清楚一些。例如:
print strftime(“%Y-%m-%dT%H:%m:%S”,localtime)
get 2015-12-18T01:22:41
print strftime(“%Y-%m-%dT%H:%m:%S”,junk)
给出错误:用法:POSIX::strftime(fmt,sec,min,hour,mday,mon,year,wday=-1,yday=-1,isdst=-1)在-e第1行,`我对这段代码的理解是,它应该在不同的时间为输入分配不同的时间戳,但不知何故,我在所有值上都得到了相同的时间戳-真的需要帮助吗?我尝试过使用gmtime()函数,甚至strftime(“%Y-%m-%dT%H:%m:%S”,localtime),但都没有真正起作用。