That worked perfectley.

> 
> From: "Larsen, Errin M HMMA/IT" <[EMAIL PROTECTED]>
> Date: 2005/10/07 Fri PM 02:03:29 EDT
> To: <beginners@perl.org>
> Subject: RE: Finding directories within a tree
> 
> [EMAIL PROTECTED] wrote:
> > Good Afternoon
> > 
> > I am attempting to develop a script that will parse a directory
> > listing and return only directory names that match a given
> > expression.  
> > 
> > It would make sense to me to use File::Find to do this but based on
> > the dir structure I am parsing, the amount of overhead to do this is
> > enourmous !  
> > 
> > Basically, I have a file structure similar to:
> > 
> > Dir1\Dir2\Support\119404\dirx\diry
> > Dir1\Dir3\Support\119893\dirx
> > Dir1\Dir4\Support\188884\dirx\diry\dirz
> > .....
> > Dir1\Dir1000\Support\100858
> > 
> > I am simply interested in finding the directories directley under the
> > Support dir (ex.119404 from the 1st example) . There is no
> > consistancy to the naming convention other then Dir1 and Support.
> > Dir2 can be many different values.   
> > 
> > I tried functionality similar to the following that did work on a
> > much smaller test bed: 
> > 
> > my $dirs="I:\\ID_000000_000999";
> > find sub { push @dirs, $File::Find::dir if $File::Find::dir =~
> > m/.+[Ss]upport\/\d+$/;}, $dirs; 
> > 
> > But in a larger scale dir structure. The performance of this was
> > horrible !! (Since it is looking through the entire structure
> > including dirs under the directory I am trying to match on).  
> > 
> > As you can see form the I:\\ this is on windows, so ls and similar
> > UNIX commands are not available. 
> > 
> > Any thoughts on how I can accomplish this task with the lowest amount
> > of overhead? 
> > 
> > Thanks!
> > Jason
> 
> Hi Jason,
> 
> Did you look into globs?  You need to make a list of every directory
> you're interested in ONCE, then process that list.
> 
> This worked for me:
> 
> 
> # I don't have access to a windows system with Perl
> # installed, but as this is all native perl, it
> # should be fine
> 
> my $dirs='/ID_000000_000999';
> my @dirs_found;
> 
> push @dirs_found, $_ while <$dirs/*/[Ss]upport/*>;
> 
> 
> 
> You can check out these perldocs for further info:
> 
> perldoc -f glob
> perldoc File::Glob
> perldoc perlop (look for I/O Operators)       
> 
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
> 
> 

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to