Hi -

> -----Original Message-----
> From: Prasad Karpur [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 25, 2003 3:18 AM
> To: [EMAIL PROTECTED]
> Subject: How to look into every subdirectory
> 
> 
> I am new to Perl and would like to know how to look into every 
> subdirectory. Any help would be greatly appreciated.
> 
> #!/usr/bin/perl
> 
> #use strict;
> use Cwd;
> 
> my $curr = cwd();
> opendir(CURRDIR, $curr) or die "can't open directory ($!), exiting.\n";
> 
> my @files = readdir(CURRDIR);
> #closedir(CURRDIR);
> 
> foreach my $file (sort @files) {
> 
>   next if $file eq '.' || $file eq '..';
>   next if !-d $file;
>  
>  if (-d $file) {
>       print "$file/\n"; #Puts a slash in front of every directory 
> it encounters
> }
> else { print "$file\n"; }
> 
> } 
> 
> 
> closedir(CURDIR);
> 

Just use a recursive subroutine to traverse your directory tree
from any starting point:

traverse (cwd());

sub traverse
{
        my $dir = shift;
        $dir .= '/' unless $dir =~ m{/$};
        opendir (DIR, $dir) ||
                die "unable to open directory $dir: $!\n";
        my @contents = readdir (DIR);
        closedir (DIR);

        for my $item (sort @contents) {
                my $di = "$dir$item";
                next unless (-d $di);
                next if ($item eq '.' or $item eq '..');
                print "dir: $di\n";
                traverse ($di);
                }

        for my $item (sort @contents) {
                my $di = "$dir$item";
                next if (-d $di);
                print "file: $di\n";
                }
}

Try the above; WARNING: may contain typos! :)

Also - check out File::Find on CPAN.

Aloha => Beau;


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

Reply via email to