common/tools/listdir.pl
author dario
Thu, 07 May 2009 11:31:35 +0100
changeset 184 f50ee414b574
parent 39 9edae8fe1416
child 78 52cc4f7310db
permissions -rw-r--r--
Reimplemented --check as the previous version didn't work (also most of the arguments are parameterized now)

#!perl -w
use strict;

my $dir      = shift or die "Usage: $0 <dir> \n";   #  provided dir to traverse
my $filelist = [];

# fwd declaration to prevent warning
sub recursedir($$);

# run recurse and print
recursedir ($dir, $filelist);
print $_, "\n" for(@$filelist);

sub recursedir($$) {

  my $dir  = shift @_;
  my $list = shift @_;

  if(opendir(DIR, "$dir")) {
    #  list dir
    for my $file(grep { !/^\./ } readdir DIR) {
      if(-d "$dir\\$file") {
        #  traverse subdirs
        recursedir("$dir\\$file", $list);
      }
      elsif(-f "$dir\\$file") {
        #  if file then swap (any present) fwd to bkslash and add to list        
        $dir   =~s/\//\\/;
        $file  =~s/\//\\/;
        push @$list, "$dir\\$file";
      }
    }
    closedir DIR;
  }
  else {
    warn "Cannot open the directory '$dir' $!\n";
  }
}