2011年9月20日
by リズムファクトリー
0 comments
-Xは以下のオプションで、ファイルテストを行うための演算子です。
演算子には以下のものがあります。
上記の単項演算子は、ファイル名かファイルハンドルを引数として動作し、"真"であるか否かを判定した結果を返します。引数が省略されると、-tではSTDINを調べますが、その他は$_を調べます。特に記述されていなければ、"真"として 1、"偽"として空文字、ファイルが存在しなければ、未定義値を返します。
ファイルテスト演算子の使い方
$file = "/home/httpd/html/index.html";
# ファイルが存在するか確認
if ( -e $file ){
....
}
ローカルファイルシステムのスーパーユーザには、-r、-R、-w、-Wに対して、常に 1 が返り、モード中のいずれかの実行許可ビットが立っていれば、-x、-Xにも 1 が返ることにも注意してください。スーパーユーザが実行するスクリプトでは、ファイルのモードを調べるためには、statを行なうか、実効uidを一時的に別のものにする必要があるでしょう。
-Tと-Bは、ファイルの最初の数ブロックを調べて、変わった制御コードや上位ビットがセットされているような、通常のテキストには現れない文字を探します。そのような文字が、多く(30%以上) 見つかるようであれば、そのファイルは-Bファイルであると判断され、それほど見つからなければ、-Tファイルとなります。最初のブロックにヌル文字が含まれるファイルも、バイナリファイルとみなされます。-Tや-B
をファイルハンドルに対して用いると、最初のブロックを調べる代わりに、標準入出力バッファを調べます。調べたファイルの中身が何もないときや、ファイルハンドルを調べたときにEOFに達していたときには、-Tも-Bも"真"を返します。
どのファイルテスト (もしくは、statやlstat) 演算子にも、下線だけから成る特別なファイルハンドルを与えると、前回のstat構造体が使われ、システムコールを省きます (-tには使えませんし、lstatや-lは実ファイルではなく、シンボリックリンクの情報をstat構造体に残します)。
print "読み込み可\n" if -r _;