Работа со временем

Скорость работы программы можно определить, используя команду 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)