我正在尝试追加localtime的整数返回值(在Perl中),但我似乎无法避免将返回值转换为如下所示:Sun Jul 26 16:34:49 2009 当我说打印本地时,我看到了我想要的东西,但是当我说 $ foo = localtime,“”;打印$ foo;我得到了字符串。 我想要那些数字。我尝试了$ foo = localtime()* 1但是恢复到1969并获取字符串。
非常混乱。
答案 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文档,因为我永远不会记住值的出现顺序。