我正在尝试附加本地时间的积分返回值(在 Perl 中),但我似乎无法避免将返回值转换为如下所示的内容:Sun Jul 26 16:34:49 2009 当我说 print localtime我看到了我想要的,但是当我说 $foo = localtime,""; 打印 $foo; 我得到了字符串。我想要那些数字。我试过 $foo = localtime() * 1 但它恢复到 1969 并得到了字符串。
很混乱。
Perl 根据上下文对事物进行不同的处理。在标量上下文中,localtime
返回一个表示当前(本地)时间的字符串。在列表上下文中,它返回组成时间值的各个字段的列表。
这个问题是由于print
.
* print FILEHANDLE LIST
* print LIST
* print
由于print
需要一个列表,这会放入localtime
列表上下文中,因此它返回一个表示秒、分钟、小时等的数字列表,然后由print
函数连接起来。分配给标量时,localtime
在标量上下文中并返回字符串。如果你想要这些数字的串联,你可以做类似的事情
my $foo = join '', localtime;
print $foo;
然而,无论你在做什么,一个合适的纪元时间值可能会更有用。在这种情况下,您可以time
改用。
每当您认为您知道函数的作用,但它没有这样做时,请查看文档。我经常查看本地时间文档,因为我永远记不起这些值的出现顺序。