stat関数 - ファイルの詳細な情報を取得する
ファイルの詳細な情報を取得するにはstat関数を使用します。
my @infos = stat $file;
以下がstatで取得できる情報です。
0 | ファイルシステムのデバイス番号 |
1 | iノード番号 |
2 | ファイルモード |
3 | このファイルへのハードリンク数 |
4 | ファイルの所有者のユーザID( 数字 ) |
5 | ファイルの所有者のグループID( 数字 ) |
6 | デバイス識別子 |
7 | ファイルのサイズ( バイト ) |
8 | 最終アクセスしてからの経過したエポックからの秒数 |
9 | 最終更新してからの経過したエポックからの秒数 |
10 | iノードが変更されてから経過したエポック時からの秒数 |
11 | ファイルの読み書きに適切だと考えられるブロックサイズ |
12 | 割り当てられている実際のブロック数 |
サンプル
stat関数を使ってファイルの詳細な情報を取得するサンプルです。
use strict; use warnings; # ファイルの詳細な情報を取得する stat my $file = 'a.txt'; my @stat_inf = stat $file; # statの解説の作成 my @stat_exp = ( '0 dev ファイルシステムのデバイス番号', '1 ino iノード番号', '2 mode ファイルモード', '3 nlink このファイルへのハードリンク数', '4 uid ファイルの所有者のユーザID( 数字 )', '5 gid ファイルの所有者のグループID( 数字 )', '6 rdev デバイス識別子', '7 size ファイルのサイズ( バイト )', '8 atime 最終アクセスしてからの経過したエポック時からの秒数', '9 mtime 最終更新してからの経過したエポック時からの秒数', '10 ctime iノードが変更されてから経過したエポック時からの秒数', '11 blksize ファイルの読み書きに適切だと考えられるブロックサイズ', '12 blocks 割り当てられている実際のブロック数', ); if (@stat_inf) { for my $i (0 .. 12) { # statの情報と解説を結びつけて、出力。 printf("%-15s%s\n", $stat_inf[$i], $stat_exp[$i]); } } else { print "stat $file は失敗しました。\n" }