Perl에서 파일의 마지막 수정 시간은 어떻게 얻습니까?
파일 핸들이 있다고 가정합니다 $fh
. 내가 가진 그것의 존재를 확인할 수 있습니다 -e $fh
이나와 파일 크기 -s $fh
또는 파일에 대한 추가 정보의 슬루 . 마지막으로 수정 된 타임 스탬프를 어떻게 얻을 수 있습니까?
내장 모듈 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는 Epoch ( GMT 1970 년 1 월 1 일 00:00) 이후 마지막으로 수정 된 시간을 제공합니다 . 그로부터 현지 시간을 결정할 수 있습니다.
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);
내장 된 stat 함수를 사용하십시오 . 또는 더 구체적으로 :
my $modtime = (stat($fh))[9]
my @array = stat($filehandle);
수정 시간은 $ array [9]에 Unix 형식으로 저장됩니다.
또는 명시 적으로 :
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
$atime, $mtime, $ctime, $blksize, $blocks) = stat($filepath);
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 in seconds since the epoch
9 mtime Last modify time in seconds since the epoch
10 ctime inode change time in seconds since the epoch
11 blksize Preferred block size for file system I/O
12 blocks Actual number of blocks allocated
그 시대는 GMT 1970 년 1 월 1 일 00:00입니다.
자세한 정보는 stat에 있습니다.
stat 호출과 파일 이름이 필요합니다.
my $last_mod_time = (stat ($file))[9];
Perl에는 다른 버전도 있습니다.
my $last_mod_time = -M $file;
그러나 그 값은 프로그램이 시작된시기에 상대적입니다. 이것은 정렬과 같은 일에 유용하지만 아마도 첫 번째 버전이 필요할 것입니다.
두 파일을 비교하여 더 새로운 파일을 확인하는 -C
경우 작동해야합니다.
if (-C "file1.txt" > -C "file2.txt") {
{
/* Update */
}
There's also -M
, but I don't think it's what you want. Luckily, it's almost impossible to search for documentation on these file operators via Google.
You could use stat() or the File::Stat module.
perldoc -f stat
I think you're looking for the stat
function (perldoc -f stat
)
In particular, the 9th field (10th, index #9) of the returned list is the last modify time of the file in seconds since the epoch.
So:
my $last_modified = (stat($fh))[9];
On my FreeBSD system, stat
just returns a bless.
$VAR1 = bless( [
102,
8,
33188,
1,
0,
0,
661,
276,
1372816636,
1372755222,
1372755233,
32768,
8
], 'File::stat' );
You need to extract mtime
like this:
my @ABC = (stat($my_file));
print "-----------$ABC['File::stat'][9] ------------------------\n";
or
print "-----------$ABC[0][9] ------------------------\n";
This is very old thread, but I tried using the solution and could not get the information out of File::stat. (Perl 5.10.1)
I had to do the following:
my $f_stats = stat($fh);
my $timestamp_mod = localtime($f_stats->mtime);
print "MOD_TIME = $timestamp_mod \n";
Just thought I share in case anyone else had the same trouble.
참고 URL : https://stackoverflow.com/questions/509576/how-do-i-get-a-files-last-modified-time-in-perl
'developer tip' 카테고리의 다른 글
HTML5 오디오 위치 설정 (0) | 2020.11.26 |
---|---|
글로벌 노드 모듈이 올바르게 설치되지 않습니다. (0) | 2020.11.26 |
브라우저가 CSS 속성에 대한 공급 업체 접두사를 만드는 이유는 무엇입니까? (0) | 2020.11.25 |
jQuery로 CSS 클래스 속성 변경 (0) | 2020.11.25 |
React에 자식 컴포넌트를 동적으로 추가 (0) | 2020.11.25 |