1 #!perl -w |
1 #!perl -w |
2 use strict; |
2 use strict; |
3 |
3 |
4 my $dir = shift or die "Usage: $0 <dir> \n"; # provided dir to traverse |
4 my $dir = shift or die "Usage: $0 <dir> \n"; # provided dir to traverse |
5 my $filelist = []; |
5 my $filelist = []; |
|
6 my $init = $dir = lc($dir); |
|
7 $init =~ s{\\}{\\\\}; |
6 |
8 |
7 # fwd declaration to prevent warning |
9 # fwd declaration to prevent warning |
8 sub recursedir($$); |
10 sub recursedir($$); |
9 |
11 |
10 # run recurse and print |
12 # run recurse and print |
11 recursedir ($dir, $filelist); |
13 recursedir ($dir, $filelist); |
|
14 |
12 print $_, "\n" for(@$filelist); |
15 print $_, "\n" for(@$filelist); |
13 |
16 |
14 sub recursedir($$) { |
17 sub recursedir($$) { |
15 |
18 |
16 my $dir = shift @_; |
19 my $dir = shift @_; |
17 my $list = shift @_; |
20 my $list = shift @_; |
18 |
21 |
19 if(opendir(DIR, "$dir")) { |
22 if(opendir(DIR, "$dir")) { |
20 # list dir |
23 # list dir |
21 for my $file(grep { !/^\./ } readdir DIR) { |
24 for my $file(grep { !/^\./ } readdir DIR) { |
22 if(-d "$dir\\$file") { |
25 if(-d "$dir/$file") { |
23 # traverse subdirs |
26 # traverse subdirs |
24 recursedir("$dir\\$file", $list); |
27 recursedir("$dir/$file", $list); |
25 } |
28 } |
26 elsif(-f "$dir\\$file") { |
29 elsif(-f "$dir/$file") { |
27 # if file then swap (any present) fwd to bkslash and add to list |
30 my $formatted = lc($dir)."/".lc($file); |
28 $dir =~s/\//\\/; |
31 $formatted =~ s!$init/!!; |
29 $file =~s/\//\\/; |
32 push @$list, $formatted; |
30 push @$list, "$dir\\$file"; |
|
31 } |
33 } |
32 } |
34 } |
33 closedir DIR; |
35 closedir DIR; |
34 } |
36 } |
35 else { |
37 else { |