opendir関数 - ディレクトリをオープンする
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;