|
ファイルの様々な情報を取得する |
【書式】
$変数 = (stat("ファイル名"))[添字];
@配列 = stat("ファイル名");
stat関数で得られる最終更新日時も、現在の時刻を取得する の項で説明した time関数 のように
1970年1月1日0時0分0秒 から現在までの秒数が得られるようになっていますので、実際に表示
したりする際には、整形が必要となります。
stat関数で得られる情報は様々なものがあり、単一の情報が欲しい場合は書式にあるように添字
を指定して変数に入れ使用しますが、複数の情報を使いたい場合は、そのまま配列に入れてしまい
、後でその配列に添字を指定して使用する方法もあります。
下のサンプルソースでは、ファイルサイズと、最終更新日時、最終アクセス日時を表示します。
最終更新日時と、最終アクセス日時はサブルーチンを利用して変換を行ってみます。
複数の値を使いたい為、 stat関数からの戻りを配列に入れていますが、単一の要素のみ取り出す
場合はstat取得時の書式を変え、戻りをスカラー変数に入れてもかまいません。
実行結果 |
ファイルの最終更新日時は 2004/09/21(TUE) 16:27
ファイルの最終アクセス日時は 2004/09/21(TUE)
18:41
ファイルサイズは 100バイトです。 |
stat関数呼び出し時の添字、もしくは取得したデータを配列に
入れた場合に得たいデータと指定する添字は以下の通りです。
0 |
デバイス番号 |
1 |
iノード番号 |
2 |
モード (タイプとパーミッションの値) |
3 |
対象ファイルのリンク数 |
4 |
対象ファイルの所有者ID |
5 |
対象ファイルのグループID |
6 |
デバイス識別子 |
7 |
ファイルのサイズ (単位はバイト) |
8 |
ファイルの最終アクセス日時 |
9 |
ファイルの最終更新日時 |
10 |
最終 iノード更新日時 |
11 |
ブロックサイズ |
12 |
ブロック数 |
|
ファイルが存在するかなどを調べる |
ファイルが存在するかどうかなどを調べる
下のサンプルソースでは、 test.txt というファイルが存在する場合 「ファイルは存在します」
と表示し、無い場合 「ファイルが見つかりません」 と表示します。
ファイルが存在するかどうかの他に、ファイルかフォルダか、アクセス権はどうか?
などを調べる事ができます。
if (-e $setfile) の -e の部分を別のオプションに変更すると、
それらの情報を調べる事ができます。
例えば if (-f $setfile) とするとファイルかどうかを調べますが、
この場合、ファイルの場合に if が真になり処理が実行されます。
-f |
ファイルかどうかを調べる
if で真になった場合はファイル |
-d |
ディレクトリかどうか調べる
if で真になった場合ディレクトリ |
-r |
読み込み可能かどうか調べる
if で真になった場合読み込み可能 |
-w |
書き込み可能かどうか調べる
if で真になった場合書き込み可能 |
-x |
実行可能かどうか調べる
if で真になった場合実行可能 |
|
|
|
|