Какая польза от местного времени `время` в Perl? - PullRequest
2 голосов
/ 04 октября 2011

Я попробовал первую программу на 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 имена, есть ли способ сделать это?

Ответы [ 3 ]

7 голосов
/ 04 октября 2011

time возвращает текущее время, отсчитываемое в секундах с начала системы. (Обычно: 1970-01-01 00:00 UTC, но исключение см. В документации ).

localtime занимает время, выраженное в этом формате, и возвращает понятные человеку части даты, которая соответствует (в текущем часовом поясе).

Если вы не дадите аргумент localtime,

"localtime ()" использует текущее время (возвращаемое временем (3)).

Так что вы можете опустить time из этого выражения в вашем случае.

Если вам небезразличен только год, вы можете сделать это:

my $se = (localtime)[5];

Хотя я все равно предпочитаю быть более явным:

my $se = (localtime(time()))[5];
7 голосов
/ 04 октября 2011

Первым местом, где можно найти ответы на подобные вопросы, является документация по Perl. документация по местному времени содержит ответ на ваш первый вопрос.

Если 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 голосов
/ 04 октября 2011

Страница man Perl заявляет: «Если EXPR опущен,« localtime () »использует текущее время (как возвращается time (3)).», Поэтому вам не нужно явно вызывать функцию времени.

По второму вопросу вы можете просто набрать

print 1900 + (localtime)[5]

, чтобы получить прямой доступ к годовой информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...