階層を持つディレクトリを一度に削除する
階層を持つディレクトリを一度に削除するにはFile::Pathモジュールのrmtreeを使用します。rmtree の戻り値は、削除することのできた、ファイル数です。
use File::Path 'rmtree'; rmtree $dir;
サンプル
階層を持つディレクトリを一度に削除するサンプルです。
use strict; use warnings; use File::Path 'rmtree'; # ディレクトリを削除する # 準備(ディレクトリの作成) my $dir1 = "dir_20080527_$$"; my $dir2 = "$dir1/dir2"; mkdir $dir1 or die "$dir1 を作成することができません。 : $!"; mkdir $dir2 or die "$dir2 を作成することができません。 : $!"; print "準備: $dir1 と $dir2 が作成されました。\n\n"; print "1: 階層を持つディレクトリを一度に削除する。\n"; { # 警告をキャッチするには、__WARN__シグナルを # 捕獲するシグナルハンドラを使うしかない。 # ( 古いrmtreeの実装の場合 ) # 第一引数に、警告の内容が格納される。 local $SIG{__WARN__} = sub { my $msg = shift; die "$msg"; }; if (-d $dir1) { # rmtree 関数で、 warn が呼ばれたら、 # 上記の sub{ } の中に移り、die で終了する。 rmtree($dir1); print "$dir1 は削除されました。\n"; } }