it isn't short but this is it:
use Cwd;
$homedir = getcwd();
@dir = $homedir;
$feddir = "";
@allfiles = ();
@dirnw = ();
@directory = ();
@files = ();
sub putdir {
$directories = "";
$spacefiles = "";
opendir (THISDIR, "$feddir") or die "dying! $feddir: $!";
@allfiles = readdir THISDIR;
closedir THISDIR;
foreach $a (@allfiles) {
chomp $a;
if ( $a eq "." || $a eq ".." ) {
next;
}
elsif ( -d $a ) {
if ($directories eq "") {
$directories = "$a";
}
else {
$directories = "$directories+" . "$a";
}
}
else {
#it should detect if the file has a space in i
+t first
$rest = "";
(undef,$rest)=split(/\s+/,$a,2);
if ($rest ne "") {
if ($spacefiles eq "") {
$spacefiles = "$feddir/$a";
}
else {
$spacefiles = "$spacefiles+" .
+ "$feddir/$a";
}
}
}
}
$rtrn = "$directories%" . "$spacefiles";
return $rtrn;
}
do {
foreach $feddir (@dir) {
chomp $feddir;
$output = putdir();
($dirs,$file) = split(/\%/,$output);
(@files) = split(/\+/,$file);
open (DATABASE, ">>/$homedir/listofiles");
foreach $f (@files) {
chomp $f;
print (DATABASE "$f\n");
#$g = $f;
#$g =~ s/\s+/_/g;
#rename $f, $g or die "can't rename! $
+f, $g: $!";
#$g = "";
}
close DATABASE;
(@directory) = split(/\+/,$dirs);
foreach $d (@directory) {
chomp $d;
(undef,$restodir)=split(/\s+/,$d);
if ($restodir ne "") {
open (DATABASE2, ">>/$homedir/listodir
+s");
print (DATABASE2 "$d\n");
close DATABASE2;
#$h = $d;
#$h =~ s/\s+/_/g;
#rename $d, $h or die "can't rename! $
+d, $h: $!";
#$h = "";
}
}
push @dirnw, @directory;
@directory = ();
}
@dir = ();
@dir = @dirnw;
@dirnw = ();
} until (@dir == "")