このエントリーをはてなブックマークに追加


Perlでファイル・ディレクトリの有無を確認する

Perlでファイル・ディレクトリの有無を確認するサンプルコードおよび実行結果を以下に記します。


スポンサーリンク

関連記事

動作確認環境

$ perl --version

This is perl 5, version 14, subversion 2 (v5.14.2) built for i686-linux-gnu-thread-multi-64int
(with 57 registered patches, see perl -V for more detail)
<省略>
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.4 LTS
Release:        12.04
Codename:       precise

ファイル・ディレクトリの有無を確認する

ファイル・ディレクトリの有無を確認するためには以下の構文になります。

if (-e ファイル名orディレクトリ名) { ...

つまり、-eによりファイルおよびディレクトリの有無を確認することができます。

ファイル・ディレクトリの有無を確認するために以下のサンプルコードを紹介します。

#!/usr/bin/perl

use strict;
use warnings;

my $fn = 'foo';
if (-e $fn) {
    print "$fn is found.\n";
}
else {
    print "$fn is not found.\n";
}

実行結果
上記サンプルコードを端末上で実行した時の操作および出力です。

$ chmod +x exists.pl
$ ./exists.pl foo
foo is not found.

fooファイルが存在しないのでfoo is not found.が表示されます。

$ touch foo
$ ./exists.pl foo
foo is found.

touchコマンドでfooファイルを作成し再度実行しました。
fooファイル存在するのでfoo is not found.が表示されます。

ディレクトリで実行試してみます。

$ rm foo
$ mkdir foo
$ ./exists.pl
foo is found.

ディレクトリでも-eオプションの場合、ファイルが存在することになります。
つまり、-eオプションはファイルまたはディレクトリの有無を確認することができます。

ディレクトリかどうかを確認する

ディレクトリかどうかを確認する構文は以下のようになります。

if (-f ファイル名) { ...

以下のサンプルコードを記します。

#!/usr/bin/perl

use strict;
use warnings;

my $dir = 'foo';
if (-f $dir) {
    print "$dir directory not is found.\n";
}
else {
    print "$dir directory is found.\n";
}

実行結果
上記サンプルコードを端末上で実行した時の操作および出力です。

$ rm -fr foo

前回のサンプルコードで試したファイル(ディレクトリ)を削除します。

$ chmod +x isdir.pl
$ touch foo
$ ./isdir.pl
foo directory not is found.

fooファイルを作成しスクリプトを実行するとfoo directory not is found.が表示されます。

$ rm foo
$ mkdir foo
$ ./isdir.pl
foo directory is found.

fooファイルを削除しfooディレクトリを作成後スクリプトを実行するとfoo directory is found.が表示されます。

つまり、-fオプションによりファイルかどうかを確認することができます。
オプション-fで偽の場合はディレクトリであるかファイルが存在しないことになります。

以上、Perlでファイルおよびディレクトリの有無を確認するサンプルコードでした。


スポンサーリンク


添付ファイル: fileexists.pl 635件 [詳細] fileisdir.pl 545件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:31:39