Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
将Time::Piece与Apache::Log::Parser一起使用_Apache_Perl_Parsing_Cpan - Fatal编程技术网

将Time::Piece与Apache::Log::Parser一起使用

将Time::Piece与Apache::Log::Parser一起使用,apache,perl,parsing,cpan,Apache,Perl,Parsing,Cpan,我正在使用解析Apache日志文件 我使用以下代码从日志文件中提取了日期 my $parser = Apache::Log::Parser->new(fast=>1); my $log = $parser->parse($data); $t = $log->{date}; 现在,我尝试使用解析日期,但我无法做到这一点 print "$t->day_of_month"; 但是,它不起作用。如何使用Time::Piece解析日期?您不能在字符串插值内的对象上调用方法

我正在使用解析Apache日志文件

我使用以下代码从日志文件中提取了日期

my $parser = Apache::Log::Parser->new(fast=>1);
my $log = $parser->parse($data);
$t = $log->{date};
现在,我尝试使用解析日期,但我无法做到这一点

print "$t->day_of_month";

但是,它不起作用。如何使用Time::Piece解析日期?

您不能在字符串插值内的对象上调用方法。它可能会输出如下内容:

Sat Feb 18 12:44:47 2017->day_of_month
删除双引号以调用该方法

print $t->day_of_month;
现在输出为:

18

请注意,如果日志中有历元值,则需要使用
localtime
gmtime
创建Time::Piece对象,如果日期是某种时间戳,则需要使用
strptime

不能在字符串插值内的对象上调用方法。它可能会输出如下内容:

Sat Feb 18 12:44:47 2017->day_of_month
删除双引号以调用该方法

print $t->day_of_month;
现在输出为:

18

请注意,如果日志中有历元值,则需要使用
localtime
gmtime
创建Time::Piece对象,如果日期是某种时间戳,则需要使用
strtime

删除双引号,并抛出错误
无法调用方法“day\u of\u month”没有包或对象参考
@Pradeep阅读我答案的最后一部分。您需要先创建一个对象。仅仅将时间::片段放入不会神奇地将某些值转换为日期对象。尝试创建一个新的
Time::片段对象
Time::片段->strtime($log->{date},“%Y”)
但在C:/xampp/perl/lib/time/Piece.pm第469行持续抛出错误
错误解析时间读取错误消息,并查看日期字符串<代码>%Y
仅为四位数的年份,如2017年。你需要完整的时间戳。你读过@Pradeep的文档了吗?Time::Piece docs链接,清楚地解释了它是如何工作的<代码>%d/%b/%Y
应该匹配
31/Jul/1999
。删除双引号并引发错误
在没有包或对象引用的情况下无法调用方法“每月的第几天”
@Pradeep阅读我答案的最后部分。您需要先创建一个对象。仅仅将时间::片段放入不会神奇地将某些值转换为日期对象。尝试创建一个新的
Time::片段对象
Time::片段->strtime($log->{date},“%Y”)
但在C:/xampp/perl/lib/time/Piece.pm第469行持续抛出错误
错误解析时间读取错误消息,并查看日期字符串<代码>%Y
仅为四位数的年份,如2017年。你需要完整的时间戳。你读过@Pradeep的文档了吗?Time::Piece docs链接,清楚地解释了它是如何工作的<代码>%d/%b/%Y
应匹配
1999年7月31日