perlメモ:mkpath・rmtreeを使ったディレクトリの作成・削除

通常はmkdirまたはrmdir等を使うと思いますが
経路パスごと作成・削除するには下記の関数が便利です。

use File::Path;
▼指定したディレクトリを作成
(途中のディレクトリが無い場合それも作成される)
mkpath([‘/foo/bar/baz’, ‘blurfl/quux’], 1, 0711);
▼指定したディレクトリを削除
(ディレクトリの中が空でなくてもその中のファイルディレクトリも含めて削除)
rmtree([‘foo/bar/baz’, ‘blurfl/quux’], 1, 1);

●mkpathについて

  • 第二引数は真の場合標準出力に作成されるパスを表示する。(default:faluse)
  • 第三引数は作成されるパーミッションの値。(default:777 現在のumask値によって修正される)
  • 戻り値はつくられる全てのディレクトリのリストを返します。
  • エラーはevalでトラップすることができます。
  eval { mkpath($dir) };
if ($@) {
print "Couldn't create $dir: $@";
}

●rmtreeについて

  • 指定したディレクトリより下を階層ごと削除します。
  • 第二引数はメッセージの抑制(defalut:false)
  • 第三引数はファイルスキップがどうのこうのであんまり考える必要は無いと思う(default:false)
  • 戻り値は削除した数
  • タグ :