Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Directory Walk

by damian (Beadle)
on Sep 08, 2000 at 05:47 UTC ( [id://31528]=perlquestion: print w/replies, xml ) Need Help??

damian has asked for the wisdom of the Perl Monks concerning the following question:

hi guys, i have this problem with directory walking i have a code here that search all directory that has htm and html files on it. the problem is that when i run the program it takes so long for the program to do the searching because some of my directories have about a hundred of html files. my idea is to specify in the program what directories should be skipped, but dunno how to do it here.. dumb huh! well anyway here is the code and give suggestions.
sub dirwalk { local @d_info=(); local $n = ""; local $r = ""; opendir H_DIR,$_[0]; @dir_info=readdir H_DIR; closedir H_DIR; foreach $n (@d_info) { next if $n=~/^\.*$/; if (-d "$_[0]/$n"); } else { next if !($n=~/^.+\.(htm|html)$/); ($r,$line) &search_tags("$_[0]/$n"); if ($r) { push @pages, "$_[0]/$n" if $r; } } } }
and oh btw, the &seach_tags is the subroutine that accepts input from user to search HTML files for a certain pattern. thanks in advance.

Replies are listed 'Best First'.
Re: Directory Walk
by merlyn (Sage) on Sep 08, 2000 at 07:06 UTC
    use File::Find; find sub { return $File::Find::prune = 1 if $File::Find::name =~ m{^/top/dir/this|some/where|.DONTSEARCH}; return unless /\.html?$/; ($r, $line) = search_tags($File::Find::name); push @pages, $File::Find::name if $r; }, "/top/dir";
    Details, of course, are in File::Find

    -- Randal L. Schwartz, Perl hacker

Re: Directory Walk
by eak (Monk) on Sep 08, 2000 at 07:04 UTC
    Try using good 'ol File::Find for this. --eric
RE: Directory Walk
by OzzyOsbourne (Chaplain) on Sep 08, 2000 at 17:42 UTC

    I tried to build what you are trying to build, and I didn't do very well. I was told to use File::Find

    I now use file::find in a incessantly to patrol servers in a variety of scripts. If you need an Example, I posted a couple of them. It is really easy to use, and it saved me from wasting time reinventing the wheel.

    But, there are a million ways to do things...

    good luck...

    -OzzyOsbourne
A reply falls below the community's threshold of quality. You may see it by logging in.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://31528]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2024-04-26 07:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found