読者です 読者をやめる 読者になる 読者になる

お題を解く。続・再帰系処理(Perlでも)

Perlでもやってみた。

再帰処理を含めてオレオレ実装した。

晒すのが恥ずかしいコード・・・
ご指摘大歓迎です。(^^;

コード

use strict;

# パスを指定する
my $dirPath = "対象のディレクトリのフルパスを指定";

# 再帰的にファイルを削除する
recursiveFind($dirPath);

#------------------------------------------------------
# 再帰処理
#------------------------------------------------------
sub recursiveFind {
    my ($dir) = @_;
    # 起点となるディレクトリへ移動して
    chdir($dir);
    # ファイルリストを五十音順にソートして読み取る
    opendir(DIR,"$dir");
    my @fileList = sort readdir(DIR);
    closedir(DIR);

    # ディレクトリのファイル群を処理
    foreach my $file (@fileList){
        # カレントディレクトリと上位ディレクトリファイルは飛ばす
        next  if( $file =~ /^\.+$/ );
        # ディレクトリの場合は再帰する
        if ( -d $file ){
            my $nestDir .= "$dir/$file";
            recursiveFind( $nestDir );
        }
        # 再帰時にカレンドディレクトリが移っているので元へ戻す
        chdir($dir);
        # 末尾が~のファイルは削除する
        unlink("$dir/$file") if -f $file and $file =~ /~$/;
    }
}