6.2 ファイルのテスト

ファイルを読み書きする前に、そのファイルがすでに存在するかどうかを知りたい場合どうしたらいいのでしょうか?
Perlではこのようなチェックをするファイルテストが20以上あります。
ファイルテストは-(ハイフン)の後にテスト項目のスイッチを付けてファイル名をその後に記入します。
<例>
-e  "file.txt"

テスト項目 結果
-r ファイルは有効、読むことが可能
-w ファイルは有効、書くことが可能
-x ファイルは有効、実行可能
-o ファイルは有効ユーザで所有されている
-R ファイルは実ユーザで読むことが可能
-W ファイルは実ユーザで書くことが可能
-X ファイルは実ユーザで実行可能
-O ファイルは実ユーザで所有されている
-e ファイルは存在する
-z ファイルのサイズがゼロ
-s ファイルのサイズがゼロでない(サイズを返す)
-f 通常のファイル
-d ディレクトリ
-l シンボリックリンク
-p ネームドパイプ(FIFO)
-S ソケット
-b ブロック特殊ファイル
-c キャラクタ特殊ファイル
-u setuid ビットが立っている
-g setgid ビットが立っている
-k sticky ビットが立っている
-t ファイルハンドルは端末に対して開かれている
-T テキストファイル
-B バイナリファイル(-T の逆)
-M スクリプトが開始された時のファイルが変更されてからの日数
-A スクリプトが開始された時のファイルが最後にアクセスされてからの日数
-C スクリプトが開始された時のファイルの inode が変更されてからの日数
行番号 CGIプログラム 解   説
1 #!/usr/local/bin/perl5 1行目は必ずPerlプログラムのある場所を記入
2 #ファイルテスト #の右側の文字列はコメント
3 print "Content-type: text/html\n\n"; print文でブラウザへタグ文字列を送っています
4 print "<HTML>\n";
5 print "<HEAD>\n";
6 print "<TITLE>ファイルテスト</TITLE>\n";
7 print "</HEAD>\n";
8 print "<BODY>\n";
9 if ( "file.txt"){ 実在するファイルのテスト
10     print "ファイル名[file.txt]のテストは真<BR>\n";
11 }
12 else{
13     print "ファイル名[file.txt]のテストは偽<BR>\n";
14 }
15 if ( "non_file.txt"){ 実在しないファイルのテスト
16     print "ファイル名[non_file.txt]のテストは真<BR>\n";
17 }
else{
    print "ファイル名[non_file.txt]のテストは偽<BR>\n";
print "</BODY>\n";
print "</HTML>\n";

戻る