Вы можете использовать встроенный модуль File::stat
(входит в Perl 5.004).
Вызов stat($fh)
возвращает массив со следующей информацией о переданном дескрипторе файла (со страницы руководства perlfunc для stat
):
0 dev device number of filesystem
1 ino inode number
2 mode file mode (type and permissions)
3 nlink number of (hard) links to the file
4 uid numeric user ID of file's owner
5 gid numeric group ID of file's owner
6 rdev the device identifier (special files only)
7 size total size of file, in bytes
8 atime last access time since the epoch
9 mtime last modify time since the epoch
10 ctime inode change time (NOT creation time!) since the epoch
11 blksize preferred block size for file system I/O
12 blocks actual number of blocks allocated
Элемент номер 9 в этом массиве даст вам последнее измененное время с начала эпохи ( 00: 00 1 января 1970 г. по Гринвичу ). Из этого вы можете определить местное время:
my $epoch_timestamp = (stat($fh))[9];
my $timestamp = localtime($epoch_timestamp);
Чтобы избежать использования магического числа 9, необходимого в предыдущем примере, дополнительно используйте Time::localtime
, другой встроенный модуль (также включенный в Perl 5.004). Это требует некоторого (возможно) более разборчивого кода:
use File::stat;
use Time::localtime;
my $timestamp = ctime(stat($fh)->mtime);