如何在打印时将localtime()保留为int?

时间:2009-07-26 23:40:41

标签: perl localtime

我正在尝试追加localtime的整数返回值(在Perl中),但我似乎无法避免将返回值转换为如下所示:Sun Jul 26 16:34:49 2009 当我说打印本地时,我看到了我想要的东西,但是当我说 $ foo = localtime,“”;打印$ foo;我得到了字符串。 我想要那些数字。我尝试了$ foo = localtime()* 1但是恢复到1969并获取字符串。

非常混乱。

3 个答案:

答案 0 :(得分:6)

该字符串是localtime在标量上下文中返回的内容。它返回

( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime();

在列表上下文中。如果您只想要时间戳,请使用time

答案 1 :(得分:4)

Perl根据 context 对事物的处理方式不同。在标量上下文中,localtime返回表示当前(本地)时间的字符串。在列表上下文中,它返回组成时间值的各个字段的列表。

由于print的语法而出现此问题。

    * print FILEHANDLE LIST
    * print LIST
    * print

由于print需要一个列表,这会将localtime放入列表上下文中,因此它会返回一个表示秒,分,小时等的数字列表,然后由{连接} {1}}功能。分配给标量时,print位于标量上下文中并返回字符串。如果你想要连接这些数字,你可以做类似

的事情
localtime

但是,对于你正在做的事情,也许适当的纪元时间值会更有用。在这种情况下,您可以使用my $foo = join '', localtime; print $foo; 代替。

答案 2 :(得分:1)

每当您认为自己知道函数的功能,但它没有这样做时,请查看文档。我经常检查localtime文档,因为我永远不会记住值的出现顺序。