9.8 ディレクトリとその中身を削除する

  • File::FIndモジュールのfinddepth関数を使用する。
    • 例. rmtree1
#!/usr/bin/perl -w
# rmtree1 - ディレクトリツリー全体を削除する(rm -rと同等)
use File::Find;
die "usage: $0 dir ..\n" unless @ARGV;
find {
  bydepth => 1,
  no_chdir => 1,
  wanted => sub {
    if (!-1 && -d _) {
      rmdir or warn;
    } else {
      unlink or warn;
    }
  }
} => @ARGV;
  • File::Pathモジュールのrmtree関数を使用
    • 例. rmtree2
#!/usr/bin/perl -w
# rmtree2 - ディレクトリツリー全体を削除する(rm -rと同等)
use File::Path;
die "usage : $0 dir ..\n" unless @ARGV;
foreach $dir (@ARGV) {
  rmtree($dir);
}