我试图追加本地时间(在Perl中)的积分返回值,但我似乎无法避免它将返回值val转换为如下所示的内容:Sun Jul 26 16:34:49 2009 When I说打印localtime我看到我想要的,但是当我说 $ foo = localtime,“”;打印$ foo;我得到了字符串。 我想要那些数字。我试过$ foo = localtime()* 1,但是回到1969并得到字符串。如何在打印时将localtime()保留为int?
非常混乱。
我试图追加本地时间(在Perl中)的积分返回值,但我似乎无法避免它将返回值val转换为如下所示的内容:Sun Jul 26 16:34:49 2009 When I说打印localtime我看到我想要的,但是当我说 $ foo = localtime,“”;打印$ foo;我得到了字符串。 我想要那些数字。我试过$ foo = localtime()* 1,但是回到1969并得到字符串。如何在打印时将localtime()保留为int?
非常混乱。
Perl根据上下文不同地处理事情。在标量上下文中,localtime
返回表示当前(本地)时间的字符串。在列表上下文中,它返回组成时间值的各个字段的列表。
出现此问题是因为print
的语法。
* print FILEHANDLE LIST
* print LIST
* print
由于print
期望列表,这使localtime
在列表环境,所以它返回的表示秒,分钟,小时数字的列表,等等,然后将其通过print
功能级联。分配给标量时,localtime
处于标量上下文中,并返回字符串。如果你想要的这些数字拼接,你可以这样做
my $foo = join '', localtime;
print $foo;
然而,也许是合适的时期时间值将是无论你做什么更有用。在这种情况下,您可以使用time
。
是的,我误解了这些数字是什么。我认为这是一个毫秒级的邮票。我意识到现在完全不是我想要的,而'时间'正是我所需要的。 – 2009-07-27 02:22:55
每当你认为自己知道一个函数的作用,但它没有这样做,请检查文档。我经常检查localtime文档,因为我永远不会记住值的出现顺序。
`print localtime`不会返回您认为它的作用;这是所有数字一起运行的清单。 – ysth 2009-07-26 23:50:54