opendir関数 - ディレクトリをオープンする



  1. Perl




  2. 関数



  3. here

opdndir関数を使うと、ディレクトリをオープンしてディレクトリハンドルを取得することができます。

opendir ディレクトリハンドル ディレクトリ名

ディレクトリハンドルには、未定義の変数を指定します。opendir関数は、以下のように使用します。

# ディレクトリ名
my $dir = 'study';

# ディレクトリオープン
opendir my $dh, $dir
  or die "Can't open directory $dir: $!"

第一引数には、未定義の変数を指定しますがmyによる変数宣言を同時に行っています。第二引数はディレクトリ名を指定しています。

もしディレクトリのオープンが失敗した場合は偽が返りますので、エラー処理をする必要があります。or演算子を使って、失敗した場合の処理を記述します。

die関数で例外を発生させてプログラムを終了させます。

「$!」という特殊変数には、ディレクトリオープンに失敗した理由が代入されているので、エラーメッセージに含めるようにしましょう。

ディレクトリハンドルをクローズするには?

ディレクトリハンドルは、スコープが終われば自動的に開放されるので、明示的にクローズする必要はありません。これは、ディレクトリハンドルへの参照がなくなった時点で、デストラクタが実行されるためです。

{
  # ディレクトリ名
  my $dir = 'study';

  # ディレクトリオープン
  opendir my $dh, $dir
    or die "Can't open directory $dir: $!"
}

# スコープが終わると自動的にディレクトリハンドルが閉じられる

明示的にディレクトリハンドルをクローズしたい場合はclosedir関数を使用します。

closedir $dh;



  1. Perl




  2. 関数



  3. here