ディレクトリを掘る

昔書いたソースを発掘。

my $cur = "./";  # スクリプト実行時のカレントディレクトリ

sub printfilelist{
  my $dir = $_[0];
  if(!opendir(DIR, $dir)){ exit(0); }
  print("*** OPEN DIRECTORY $dir ***\n");
  my @list = readdir(DIR);
  my $file, $str;
  foreach $file (@list){
    my $path = $dir . $file;  # カレントからのパスを記述
    if(-f $path){ $str = "通常ファイル"; }
    elsif(-d $path){
      if(($file eq "."){ $str = "ディレクトリ(自分)"; }
      elsif($file ne ".."){ $str = "ディレクトリ(一つ前)"; }
      else{ $str = "ディレクトリ"; }
    }
    print("$file\t$str\n");

    if(-d $path){
      if(($file ne ".") && ($file ne "..")){
        &printfilelist($path . "/");  #再帰呼び出し
      }
    }
  }
  closedir(DIR);
  print("*** CLOSE DIRECTORY $dir ***\n");
}

# メイン
&printfilelist($cur);