ファイルの存在を確認する
ファイルが存在するかどうかを確認するには、ファイルテスト演算子「-e」を使用します。
-e $file
ファイルが存在すると真値を、存在しないと偽値を返します。ディレクトリやシンボリックリンクなどもファイルとして扱われます。Unixではディレクトリも特別なファイルとみなしファイルという概念でとらえるからです。
通常ファイルが存在するかどうかを確認
ディレクトリではない通常のファイルが存在するかどうかを確認したい場合は、ファイルテスト演算子「-f」で確認できます。
-f $file
通常ファイルが存在すると真値を、存在しないと偽値を返します。通常ファイルとはテキストファイルやバイナリファイルなどのデータを格納しているファイルのことです。
存在を確認できるファイルの種類
その他に、ディレクトリの存在やシンボリックリンクの存在を確認できるファイルテスト演算子もあります。
ファイルの種類 | 対応するファイル演算子 |
通常ファイル | -f |
ディレクトリ | -d |
シンボリックリンク | -l |
名前つきパイプ、パイプであるファイルハンドル | -p |
ソケット | -S |
ブロックスペシャルファイル | -b |
キャラクタースペシャルファイル | -c |
用語の解説のページにリンクを張っておきました。
サンプルプログラム
ファイルテスト演算子「-e」を使ってファイルの存在を確認するサンプルです。
use strict; use warnings; # ファイルの存在を確認する。 # -e ファイル名 # -e を使えば、ディレクトリやファイルやシンボリックリンクなど # を区別せずに、それが、存在するかどうかを確認できます。 print "1: ファイルの存在を確認する。 -e \n"; my $file_all_type = 'a'; if (-e $file_all_type) { print "'$file_all_type' は、存在します。\n"; } else { print "'$file_all_type' は、存在しません。\n" }
ファイル演算子 -f を使って通常ファイルの存在を確認するサンプルです。
use strict; use warnings; # 通常ファイルの存在を確認する。 # -f ファイル名 print "1: 通常ファイルの存在を確認する。 -f \n"; my $file = 'a.txt'; if (-f $file) { print "'$file' は、存在します。\n"; } else { print "'$file' は、存在しません。\n" }