in reply to Re: Re: opendir and directories that have spaces in them
in thread opendir and directories that have spaces in them
I'm not sure why you're doing a few things there:
- taking a list and returning it spliced together as a string, only to split it again (why not return two array refs instead?)
- doing a split just to find out if there's a space character in a filename (why not just use m// ?)
- chomping filenames from readdir (where would the newlines have come from?)
- using @dir == "" rather than just @dir to detect whether an array is empty
- what does the code do when you have a file or directory name with a '+' or '%' character in it?
- re-opening your database for each file/directory
What's wrong with something like:
use File::Find; use Cwd; my $homedir = getcwd(); open DATABASE, ">>$homedir/listofiles" or die "can't open listofiles: + $!\n"; open DATABASE2, ">>$homedir/listodirs" or die "can't open listodirs: $ +!\n"; File::Find::find( sub { return if /^\.\.?$/; return unless /\s/; if ( -d $_ ) { print DATABASE2 "$File::Find::name\n"; } else { print DATABASE "$File::Find::name\n"; } ( my $newName = $File::Find::name ) =~ s/\s+/_/g; print STDERR "renaming $File::Find::name to $newName\n"; # rename($File::Find::name, $newName) or die "can't rename : $!\n"; }, $homedir ); close DATABASE; close DATABASE2;
|
---|
In Section
Seekers of Perl Wisdom