Скорость работы программы можно определить, используя команду time:
bash-2.05$ time ./time.pl
real 0m0.613s
user 0m0.487s
sys 0m0.074s
bash-2.05$
Ниже приведено несколько примеров программ, выводящих текущее время.
&time($time);
print "$time\n";
sub time{
$time = sprintf("%02d/%02d/%02d b %02d:%02d:%02d", $tm->hour,$tm->min, $tm->sec, $tm->mday, $tm->mon+1, $tm->year+1900);
return $time;
}
Еще один способ:
#!/usr/bin/perl
my ($wday,$mday,$mon,$year,$time) =
(split(" ",gmtime(time+10800)))[0,2,1,4,3];
print "$wday, $mday $mon $year $time GMT\n";
print (split("\s",gmtime(time+10800)))->[0,2,1,4,3];
print "\n";
Тест для Григорианского календаря на високосность:
year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)
Время можно вывести и вот так:
@d=split(/[ ]+/, scalar localtime);
печатает:
$d[0]=='Wed'
$d[1]=='Jun'
$d[2]=='5'
$d[3]=='14:59:35'
$d[4]=='2002'
Еще и так:
&Date($time);
print "$time\n";
sub Date {
($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $Weekday,
$DayOfYear, $IsDST) = localtime(time);
$RealYear = $Year + 1900;
$Month++;
if($Month < 10) {$Month = "0" . $Month}
if($DayOfMonth < 10) {$DayOfMonth = "0" . $DayOfMonth}
if($Hour < 10) {$Hour = "0" . $Hour}
if($Minute < 10) {$Minute = "0" . $Minute}
if($Second < 10) {$Second = "0" . $Second}
$date = "$DayOfMonth-$Month-$RealYear";
$approval_date = "$RealYear|$Month|$DayOfMonth";
$time = "$Hour:$Minute:$Second";
}
И так:
#!/usr/bin/perl
use POSIX qw();
my $time = POSIX::strftime "%H:%M:%S", localtime time;
print "$time\n";
Если возникла необходимость локализовать время в соответствии с часовым поясом, то
#!/usr/bin/perl
use POSIX qw();
my $time = POSIX::strftime "%H:%M:%S", localtime(time+3*3600);
print "$time\n";
Спасибо: S.Nitsulenko, Vladimir Podgorny, Artem Chuprina, Dmitry Koteroff (from fido7.ru.perl)