Чтобы к получить более высокую точность для Вас функционируют formatTime
, необходимо взять в миллисекундах, а не секунды. Вы не можете занять округленные секунды и сделать это более точным.
С тех пор localtime () только принимает секунды с эпохи, необходимо будет преобразовать миллисекунды, переданные в и преобразовывать его в секунды. Вот пример:
use POSIX qw(floor);
sub formatTime {
my ( $milliseconds ) = @_;
my $seconds = floor($milliseconds / 1000);
my $msec = $milliseconds % 1000;
my( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) =
localtime( $seconds );
$year += 1900;
$mon += 1;
return ( sprintf "%02d/%02d/%04d %02d:%02d:%02d:%04d",
$mday,$mon,$year,$hour,$min,$sec,$msec );
}
Другая опция состояла бы в том, чтобы использовать DateTime. Если Вы передаете в секундах как десятичное число, оно может создать объект DateTime с большей точностью:
use DateTime;
sub formatTime {
my ( $seconds ) = @_;
my $dt = DateTime->from_epoch( epoch => $seconds );
# ....
}
CH ange MOD e.
[root@localhost /]# apropos -e chmod -s 1
chmod (1) - change file mode bits
[root@localhost /]#