Bryan R Harris wrote:
> 
> I have a large directory tree that I'd like to build index files for,
> essentially an
> 
>      ls > index.txt
> 
> in each directory in the tree.  Obviously I'm having trouble figuring it
> out.  =)
> 
> I've tried the following:
> 
> use File::Find;
> sub process_file {
> if (-d) {
>   $tmp = `ls $_`;
>   open(OFILE, "> index.txt") || die ("Couldn't open index.txt: $!\n");
>   print OFILE $tmp;
>   close(OFILE);
>   }
> }
> find(\&process_file, @ARGV);
> print "\n";
> 
> But it misses the deepest level of directories.  Is there an established
> way of doing this kind of thing?


This should do what you want:

use File::Find;
my %dirs;
find( sub { push @{$dirs{$File::Find::dir}}, "$_\n" unless /^\.\.?$/ }, @ARGV );

for my $dir ( keys %dirs ) {
    open OFILE, "> $dir/index.txt" or warn "Cannot open $dir/index.txt: $!";
    print OFILE @{$dirs{$dir}};
    close OFILE;
    }

__END__


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to