ファイルテスト演算子

Perl初心者のためのPerlノートです!

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

◆ はじめに

本ページは、私がPerlを習得した時(いや習得中)のノートです。

ごく普通の言語(COBOL,C,Java,VB等)を知っている人が、Perlをやり始めるといろいろと悩むことがあります。

それは、

です。

本ページは、そのようなハードルを一つ一つクリアにしていけたらと思います。

そして、本ページが何かのお役に立てれば幸いです。では、ごゆっくりご覧ください。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

◆ サイト最新情報

◆ コンテンツ

2008-11-30 ファイルテスト演算子

ファイルテスト演算子を使用すれば、ファイルの属性を参照、或いは取得することができます。


◆ ファイルテスト演算子
    -r  : 読み込み可能であれば
    -w  : 書き込み可能であれば
    -x  : 実行可能であれば
    -o  : 自分のものであれば
    -R  : 実uid/gidで読み込み可能であれば
    -W  : 実uid/gidで書き込み可能であれば
    -X  : 実uid/gidで実行可能であれば
    -O  : 実uidのものであれば
    -e  : 存在すれば
    -z  : サイズが0であれば
    -s  : サイズが0でなければ(ファイルサイズを返す)
    -f  : 通常ファイルであれば
    -d  : ディレクトリであれば
    -l  : シンボリックリンクであれば
    -p  : 名前付きパイプであれば
    -S  : ソケットであれば
    -b  : ブロック型スペシャルファイルであれば
    -c  : キャラクタ型スペシャルファイルであれば
    -u  : setuidビットが立っていれば
    -g  : setgifビットが立っていれば
    -k  : stickyビットが立っていれば
    -t  : ファイルハンドルが tty としてオープンされていれば
    -T  : ファイルがテキストファイルであれば
    -B  : ファイルがバイナリファイルであれば
    -M  : perl起動時における、ファイルの更新時刻からの日数
    -C  : perl起動時における、ファイルの作成時刻からの日数
◆ ファイルテスト演算子使用サンプルソース(ftest.pl)
use strict;
use warnings;
use utf8; 
binmode STDOUT, ':encoding(shiftjis)';
if (-r "ftest.pl") {
    print '読み込み可能', "\n";
}
else {
    print '読み込み不可能', "\n";
}
if (-w "ftest.pl") {
    print '書き込み可能', "\n";
}
else {
    print '書き込み不可能', "\n";
}
if (-x "ftest.pl") {
    print '実行可能', "\n";
}
else {
    print '実行不可能', "\n";
}
if (-R "ftest.pl") {
    print '実uid/gidで読み込み可能', "\n";
}
else {
    print '実uid/gidで読み込み不可能', "\n";
}
if (-W "ftest.pl") {
    print '実uid/gidで書き込み可能', "\n";
}
else {
    print '実uid/gidで書き込み不可能', "\n";
}
if (-X "ftest.pl") {
    print '実uid/gidで実行可能', "\n";
}
else {
    print '実uid/gidで実行不可能', "\n";
}
if (-e "ftest.pl") {
    print '存在する', "\n";
}
else {
    print '存在しない', "\n";
}
if (-z "ftest.pl") {
    print 'サイズが0です', "\n";
}
else {
    print 'サイズが0でない', "\n";
}
if (-s "ftest.pl") {
    print 'サイズが ' . (-s "ftest.pl") . " です", "\n";
}
else {
    print 'サイズが0です', "\n";
}
if (-f "ftest.pl") {
    print '通常ファイルです', "\n";
}
else {
    print '通常ファイルでないです', "\n";
}
if (-d "ftest.pl") {
    print 'ディレクトリです', "\n";
}
else {
    print 'ディレクトリでないです', "\n";
}
if (-l "ftest.pl") {
    print 'シンボリックリンクです', "\n";
}
else {
    print 'シンボリックリンクでないです', "\n";
}
if (-p "ftest.pl") {
    print '名前付きパイプです', "\n";
}
else {
    print '名前付きパイプでないです', "\n";
}
if (-S "ftest.pl") {
    print 'ソケットです', "\n";
}
else {
    print 'ソケットでないです', "\n";
}
if (-b "ftest.pl") {
    print 'ブロック型スペシャルファイルです', "\n";
}
else {
    print 'ブロック型スペシャルファイルでないです', "\n";
}
if (-c "ftest.pl") {
    print 'キャラクタ型スペシャルファイルです', "\n";
}
else {
    print 'キャラクタ型スペシャルファイルでないです', "\n";
}
if (-u "ftest.pl") {
    print 'setuidビットが立っている', "\n";
}
else {
    print 'setuidビットが立っていない', "\n";
}
if (-g "ftest.pl") {
    print 'setgifビットが立っている', "\n";
}
else {
    print 'setgifビットが立っていない', "\n";
}
if (-k "ftest.pl") {
    print 'stickyビットが立っている', "\n";
}
else {
    print 'stickyビットが立っていない', "\n";
}
if (-t "ftest.pl") {
    print 'ファイルハンドルが tty としてオープンされている', "\n";
}
else {
    print 'ファイルハンドルが tty としてオープンされていない', "\n";
}
if (-T "ftest.pl") {
    print 'ファイルがテキストファイルです', "\n";
}
else {
    print 'ファイルがテキストファイルでないです', "\n";
}
if (-B "ftest.pl") {
    print 'ファイルがバイナリファイルです', "\n";
}
else {
    print 'ファイルがバイナリファイルでないです', "\n";
}
print 'perl起動時における、ファイルの更新時刻からの日数=', -M "ftest.pl" ,"\n";
print 'perl起動時における、ファイルの作成時刻からの日数=', -C "ftest.pl" ,"\n";
◆ 補足

ファイルテスト演算子でよく使用するのは、存在有無の『-e』とサイズ取得の『-s』ですね。

尚、上記以外に『-A』の『ファイルの参照時刻からの日数』というのが、ありますが・・・今回これをテストした値が謎の値だったので、割愛しました。

◆ おすすめ Perl本

■ 続・初めてのPerl 改訂版

『初めてのPerl』の次ぎに読むと吉です。

結構いいですが・・・、初心者にはちょっと難しいかもです。

■ 結城浩のPerlクイズ

この本には、ちゃいちゃんパパの小話しが載っています(謎)。

ある程度、Perlを理解している人には、たまらない内容になっています。さすが結城先生だな!

結城浩のPerlクイズ

■ 新版Perl言語プログラミングレッスン入門編

実は、私はまだ読んでいませんが、結城先生の本なので良くないはずがありません。

新版Perl言語プログラミングレッスン入門編

■ CGI&Perlポケットリファレンス (Pocket reference)

この本は、非常に役に立ちます。ちょっと調べるのに最適です。サンプルも説明も的を射ています。

CGI&Perlポケットリファレンス (Pocket reference)

■ Perlベストプラクティス

一読の価値有りだと思います。

Perlベストプラクティス

■ プログラミングPerl〈VOLUME1〉

ご存知、Perl本の聖書、ラクダ本(上)です。

■ プログラミングPerl〈VOLUME2〉

ご存知、Perl本の聖書、ラクダ本(下)です。

◆ おわりに

最後に、本ページが、何かのお役に立てれば幸いです。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

人のよいところをどんどん見つけよう