URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 975
[ Назад ]

Исходное сообщение
"Как узнать время создания файла в Perl?"

Отправлено lex , 25-Дек-02 14:20 
Подскажите пожалуйста как узнать время создания файла в Perl?

Содержание

Сообщения в этом обсуждении
"RE: Как узнать время создания файла в Perl?"
Отправлено konst , 25-Дек-02 14:43 
>Подскажите пожалуйста как узнать время создания файла в Perl?
perldoc -f stat



"RE: Как узнать время создания файла в Perl?"
Отправлено lex , 25-Дек-02 15:38 
>>Подскажите пожалуйста как узнать время создания файла в Perl?
>perldoc -f stat

Так stat выдает что-то типа 1046897564, a как из секунд в нормальный формат перевести, что отдельную программу писать?


"RE: Как узнать время создания файла в Perl?"
Отправлено konst , 25-Дек-02 17:09 
>>>Подскажите пожалуйста как узнать время создания файла в Perl?
>>perldoc -f stat
>Так stat выдает что-то типа 1046897564, a как из секунд в нормальный
>формат перевести, что отдельную программу писать?
perldoc -f localtime
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)  = stat($filename);
===========
    #0     1       2        3         4        5
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
====
@time = localtime($ctime);#ctime from stat();
$year = 1900 + $time[5];
$month = 1+ $time[4];
$day = $time[3];

"RE: Как узнать время создания файла в Perl?"
Отправлено lex , 26-Дек-02 06:22 
Большущее спасибо! Чесно говоря даже и не ожидал так подробно все получить. Еще раз спасибо.



"RE: Как узнать время создания файла в Perl?"
Отправлено capsDlock , 27-Дек-02 08:37 
>Подскажите пожалуйста как узнать время создания файла в Perl?

#$filename - имя файла
#$mtime - время создания
$mtime = (stat $filename)[9];
$mtime =~s/^(\d+)/localtime($1)/e;



"RE: Как узнать время создания файла в Perl?"
Отправлено konst , 27-Дек-02 18:06 
>>Подскажите пожалуйста как узнать время создания файла в Perl?
>
>#$filename - имя файла
>#$mtime - время создания
>$mtime = (stat $filename)[9];
>$mtime =~s/^(\d+)/localtime($1)/e;
===
+ Надо иметь ввиду, что mtime - время last modified
а время создания - неопределимое понятие


"RE: Как узнать время создания файла в Perl?"
Отправлено Шанхай , 30-Сен-03 09:22 
Сделал всё как рекомендовали. Результат: Thu Jan  1 03:00:01 1970029820897
Хотя файл создан полчаса назад. :(

функция stat "родная"???


"RE: Как узнать время создания файла в Perl?"
Отправлено Шанхай , 30-Сен-03 09:41 
Сделал всё как рекомендовали. Результат: Thu Jan  1 03:00:01 1970029820897
Хотя файл создан полчаса назад. :(

функция stat "родная"???


"RE: Как узнать время создания файла в Perl?"
Отправлено konst , 30-Сен-03 12:17 
>Сделал всё как рекомендовали. Результат: Thu Jan  1 03:00:01 1970029820897
>Хотя файл создан полчаса назад. :(
>
>функция stat "родная"???

Как ты умудрился получить такой результат?
Что именно ты делал?
Может быть у тебя "особая" файловая система - и другой порядок полей возвращаемых stat()?
FROM PERLDOC

  Typically used as follows:

                   ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
                      $atime,$mtime,$ctime,$blksize,$blocks)
                          = stat($filename);

               Not all fields are supported on all filesystem
               types.

=========================


"RE: Как узнать время создания файла в Perl?"
Отправлено Шанхай , 30-Сен-03 12:32 
>>Сделал всё как рекомендовали. Результат: Thu Jan  1 03:00:01 1970029820897

>Как ты умудрился получить такой результат?
>Что именно ты делал?
да вот всё вышесказанное и сделал. :(

>Может быть у тебя "особая" файловая система - и другой порядок полей
>возвращаемых stat()?
freebsd
>FROM PERLDOC
читал, читал... вот и я думаю что она "родная"
Но почему время тогда такое?


"RE: Как узнать время создания файла в Perl?"
Отправлено konst , 30-Сен-03 13:17 
>>>Сделал всё как рекомендовали. Результат: Thu Jan  1 03:00:01 1970029820897
>
>>Как ты умудрился получить такой результат?
>>Что именно ты делал?
>да вот всё вышесказанное и сделал. :(
>
Выше были даны 2 варианта (полный и краткий). Использовать что-то одно.
Достаточно
# 1-st
$mtime = (stat $filename)[9]; # $mtime =  кол-во секунд
# 2-nd
$mtime =~s/^(\d+)/localtime($1)/e;
print "$filename = $mtime"\n;

Твой результат означает, что  у тебя $mtime == 0 (после 1-st этапа)