関数順 インデックス
目的別 インデックス

構文
 
 stat ファイル・ハンドル
 stat ファイル名

返り値
 
 更新時刻などの13個のファイル情報

説明

  • ファイルの情報を返します。
  • 引数を省略すると$_が対象になります。
  • 引数に _ を指定すると,最後に実行したstatまたは最後に実行したファイルテスト演算子から得られた情報を返します。
  • 返す値は更新時刻などを表す13個の要素を持つリストです。
  • 13個のリストは先頭から順番に()の値になります。

    1 ファイル・システムのデバイス番号
    2 inode番号
    3 ファイル・モード
    4 ハードリンクの数
    5 所有者のユーザID(数値)
    6 所有者のグループID(数値)
    7 デバイス識別子(スペシャルファイルのみ)
    8 ファイルサイズ
    9 最終アクセス時刻(エポック秒)
    10 最終更新時刻(エポック秒)
    11 最後のinode変更時刻(エポック秒)
    12 ブロックサイズ
    13 ブロック数

使用例

ファイルfoo.txtの最終更新時刻を表示する
#!/usr/bin/perl
use strict;
use warnings;
use POSIX;

my $filename = 'foo.txt';

# ファイル情報の取得
my @fileinfo = stat $filename; 

# 最終更新時刻の取得
my $mtime = $fileinfo[9]; 

my $now = POSIX::strftime "%Y/%m/%d %H:%M:%S", localtime($mtime);

print $now, "\n";
ディレクトリ/home/user1/xxx内で更新時刻が1時間よりも前のファイルを削除する
#!/usr/bin/perl
use strict;
use warnings;

my $dir = '/home/user1/xxx'; 
my $expire_time = 3600; 
my $now = time; 

opendir my $dh, $dir or die "$!:$dir";
while (my $file = readdir $dh) {
  next unless -f $file; 
  my $path = sprintf "%s/%s", $dir, $file;
  my $mtime = (stat $path)[9]; 
  if ($mtime + $expire_time < $now) {
    if (unlink $path) {
      print "[Deleted]$path\n";
    } else {
      warn "$!:$path";
    }
  }
}
closedir $dh;
ファイルfoo.txtの最終更新時刻を表示する(File::statを使用)
#!/usr/bin/perl
use strict;
use warnings;
use File::stat;

my $filename = 'foo.txt';

my $st = stat $filename; 
my $now = localtime($st->mtime);

print $now, "\n";
※File::statモジュールを使うと,ファイル情報をリストではなく名前で取得することができます。