Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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 - Fatal编程技术网

Perl语法帮助

Perl语法帮助,perl,Perl,我是perl新手,有人能在下面解释一下使用$t[1]和timelocal(1,1,1,reverse@t)的目的吗 下面的命令用于将时间戳转换为历元格式。但是请解释一下这个命令$t[1]和timelocal(1,1,1,reverse@t)的用法 它从第一个分量中减去1。@t数组的。 我认为这是月份字段。 注意:第一个[1],而不是第零个[0] 问候, 它从第一个分量中减去1。@t数组的。 我认为这是月份字段。 注意:第一个[1],而不是第零个[0] 问候, Vern.一个例子如下: per

我是perl新手,有人能在下面解释一下使用$t[1]和timelocal(1,1,1,reverse@t)的目的吗

下面的命令用于将时间戳转换为历元格式。但是请解释一下这个命令$t[1]和timelocal(1,1,1,reverse@t)的用法


它从第一个分量中减去1。@t数组的。 我认为这是月份字段。 注意:第一个[1],而不是第零个[0]

问候,


它从第一个分量中减去1。@t数组的。 我认为这是月份字段。 注意:第一个[1],而不是第零个[0]

问候,


Vern.

一个例子如下:

perl -MTime::Local=timelocal -e '
    @t = split(/[-\/]/, $ARGV[0]);
    $t[1]--;
    print timelocal(1,1,1,reverse @t);
' "2016-10-18"
将打印一个纪元日期(自1970年1月1日起的秒数)

查看文档:我们看到:

值得特别注意的是所提供值的预期范围。月中某一天的值为实际日期(即1..31), 而月份是自1月以来的月数(0..11)。这是 与localtime()和gmtime()返回的值一致

第一条语句用破折号和斜杠将字符串
2016-10-18
拆分为数组
@t=(2016,10,18)
。Perl数组默认基于0,因此
$t[1]
表示第二项,即月份,此处设置为
10
。由于
localtime
(0-11)
范围内需要几个月的时间,我们需要减去
1
,将
$t[1]
设置为
9
。最后一条语句只是将日期部分转换回历元时间,反转
@t
以将参数顺序与timelocal匹配:

 #       timelocal( $sec, $min, $hour, $mday, $mon, $year )
 $time = timelocal(     1,    1,    1,    18,    9,  2016 ); # time in seconds = 1476766861

例如:

perl -MTime::Local=timelocal -e '
    @t = split(/[-\/]/, $ARGV[0]);
    $t[1]--;
    print timelocal(1,1,1,reverse @t);
' "2016-10-18"
将打印一个纪元日期(自1970年1月1日起的秒数)

查看文档:我们看到:

值得特别注意的是所提供值的预期范围。月中某一天的值为实际日期(即1..31), 而月份是自1月以来的月数(0..11)。这是 与localtime()和gmtime()返回的值一致

第一条语句用破折号和斜杠将字符串
2016-10-18
拆分为数组
@t=(2016,10,18)
。Perl数组默认基于0,因此
$t[1]
表示第二项,即月份,此处设置为
10
。由于
localtime
(0-11)
范围内需要几个月的时间,我们需要减去
1
,将
$t[1]
设置为
9
。最后一条语句只是将日期部分转换回历元时间,反转
@t
以将参数顺序与timelocal匹配:

 #       timelocal( $sec, $min, $hour, $mday, $mon, $year )
 $time = timelocal(     1,    1,    1,    18,    9,  2016 ); # time in seconds = 1476766861

命令的输出是什么。你能运行它吗?命令的输出是什么。你能运行它吗?非常感谢你的解释。这对我理解很有帮助。再次非常感谢你的帮助非常感谢你伟大的解释。这对我的理解帮助很大。再次感谢你的帮助