문제

또 다른 질문을 연구 할 때 나는 stat Perl의 함수는 파일 핸들 또는 파일 이름 대신 인수로 Dirhandle을 취할 수 있습니다.

그러나 나는 이것의 올바른 사용의 예를 찾을 수 없다 - Perl 매뉴얼에는 없다.

누구든지 사용 방법의 예를 보여줄 수 있습니까?

도움이 되었습니까?

해결책

파일 또는 파일 핸들에 대해 동일한 방식으로 사용합니다.

#!/usr/bin/perl
use strict;

my $dir = shift;
opendir(DIR, $dir) or die "Failed to open $dir: $!\n";
my @stats = stat DIR;
closedir(DIR);
my $atime = scalar localtime $stats[8];

print "Last access time on $dir: $atime\n";

디렉토리 핸들에 STAT를 사용하는 기능은 PERL 5.10 주위에 추가되었으므로 휴대성에 관심이 있으면 피해야합니다.

다른 팁

당신은 당신처럼 그것을 사용합니다 stat 파일 핸들에서 :

<~> $ mkdir -v foo ; perl -e 'opendir($dh , "./foo"); @s = stat $dh; print "@s"'
mkdir: created directory `foo'
2049 11681802 16877 2 1001 1001 0 4096 1228059876 1228059876 1228059876 4096 8

(개인적으로 나는 사용하는 것을 좋아합니다 File::stat Nice Nice Accessors를 얻으려면 다섯 번째 요소가 UID임을 기억하거나 조회 할 필요가 없습니다 ...)

핸들이 파일 핸들로 사용 된 경우 디렉토리가 아닌 파일에 적용됩니다.

$ perl -wl
opendir $h, "." or die;
open $h, "/etc/services" or die;
print "dir:".readdir($h);
print "file:".readline($h);
print stat("/etc/services");
print stat(".");
print stat($h);
close($h);
print stat($h);
__END__
dir:.
file:# Network services, Internet style

205527886633188100018274122800783211967194861209994037409640
20551515522168777410001000020480122803711512280371021228037102409640
205527886633188100018274122800783211967194861209994037409640
stat() on closed filehandle $h at - line 1.
    (Are you trying to call stat() on dirhandle $h?)

Windows (ActivePerl)에서 Perl 5.10.1을 사용하고 Dirhandle에서 STAT를 수행하는 것은 작동하지 않습니다. 그러나 디렉토리의 경로 문자열에 대한 통계를 수행하면 작동합니다.

공장

  my $mtime = (stat( $directory ))[ 9 ];
  print "D $directory $mtime\n";

이것은 ( "Dirfd 함수가 구현되지 않았다 ...")

  my $dh;
  if( opendir( $dh, $directory ) == 0 ) {
    print "ERROR: can't open directory '$directory': $!\n";
    return;
  }
  $mtime = (stat( $dh ))[ 9 ];
  print "D $directory $mtime\n";
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top