匿名質問者

perlでディレクトリ内のファイルをすべて消したい。


ディレクトリの中に入っているファイルをすべて消したいです。
ググって2通り試してみたのですがうまくいきませんでした。
(どちらもエラーは出ずただ消えないだけ…)


$Deleir = './img';
opendir(DIR, $Deleir);
unlink map { $Deleir.'/'.$_ } grep { -f $Deleir.'/'.$_ } readdir DIR;
closedir(DIR);


$Deleir = './img';
unlink(glob("$Deleir/*.*"));

どのようにしたらよいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2017/06/09 09:30:03

回答3件)

匿名回答1号 No.1

たとえば

$|=1;
my $Deleir = './dum';
for my $file(glob("$Deleir/*.*")) {
	print "$file ... ";
	unlink $file or die "$!";
	print "done\n";
}

のようにすれば削除できない理由が分かるかも

匿名回答3号 No.2

use File::Path 'rmtree';

$target = './img'; # 削除対象のディレクトリ

rmtree($target);
匿名回答4号 No.3

File::Path モジュールの rmtree を使ってはいかがですか?
http://d.hatena.ne.jp/perlcodesample/20100409/1270894115
・ディレクトリ毎消える
・サブディレクトリも消える
という違いがあるので、意図されるものとは異なるかもしれませんが。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません