我尝试了第一个perl程序,如下所示:
print "My First Perl Program!\n";
$name ="Anto Aravinth";
print "Hello $name your age now is ";
$byear = 1991;
my($se,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime time;
$age=($year+1900)-$byear;
print $age;
产生输出:
My First Perl Program!
Hello Anto Aravinth your age now is 20
我理解逻辑,但有些疑惑。在这一行my($se,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime time;
我知道它将当前时区值返回到9个不同的变量。现在我想知道time
在这一行中是什么,因为没有time
我也得到了输出。那么是否需要插入time
?
我希望直接获取year
而不输入所有9
个名称,有没有办法这样做?
答案 0 :(得分:7)
time
返回当前时间,以系统纪元以来的秒数计算。 (通常:1970-01-01 00:00 UTC,但请参阅documentation以获取例外情况。)
localtime
需要以该格式表示的时间,并返回与(在当前时区)对应的日期中人类可理解的部分。
如果你没有给localtime
提出论据,
“localtime()”使用当前时间(由时间(3)返回)。
所以你可以在你的案例中省略time
的表达式。
如果你只关心这一年,你可以这样做:
my $se = (localtime)[5];
虽然我更喜欢更明确:
my $se = (localtime(time()))[5];
答案 1 :(得分:7)
第一个寻找这类问题答案的地方是Perl文档。 documentation for localtime包含您第一个问题的答案。
如果省略EXPR,则localtime()使用当前时间(由返回值返回) 时间(3))。
其他人已经给出了一种方法,可以从本地时间获得一年(使用列表切片),但是文档提到了Time::localtime模块,该模块提供了不同的方法。
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::localtime;
say 'The year is ', localtime->year + 1900;
答案 2 :(得分:2)
Perl联机帮助页指出“如果省略EXPR,”localtime()“使用当前时间(由time(3)返回)。”,因此您不需要显式调用时间函数。
关于第二个问题,你可以简单地做
print 1900 + (localtime)[5]
直接访问年份信息。