Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Find a file in a list of directories

by asdfgroup (Beadle)
on Apr 25, 2002 at 15:27 UTC ( #161996=note: print w/replies, xml ) Need Help??


in reply to Find a file in a list of directories

more compact version of your code. And you should use '-e' test instead of '-t'
#!/usr/bin/perl sub FileFinder { my ($target, @dir) = @_; return (grep {-e $_} map {"$_/$target"} @dir)[0]; } open(F, FileFinder('FileFinder.pl', qw(some/ dirs/ ./)) || die "File n +ot found") or die $!;

Replies are listed 'Best First'.
Re: Re: Find a file in a list of directories
by demerphq (Chancellor) on May 06, 2002 at 16:50 UTC
    IMO in general grep and map shouldn't be chained together, map can do greps job without having retraverse the array.
    return (map{-e "$_/$target" ? "$_/$target" : ()} @dir)[0];
    And frankly why bother with map and grep at all? This is much more efficient.
    sub FileFinder { my $target=shift; -e "$_/$target" && return "$_/$target" foreach @_; undef }
    Oh and before the premature optimization police arrest me, remember that we are searching a filesystem (possible remote etc) here. That call to -e could take a while and if we have to do more of them than we really need to then we could end up wasting a lot of time.

    Adjust the file test to your taste ;-)

    Yves / DeMerphq
    ---
    Writing a good benchmark isnt as easy as it might look.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://161996]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (10)
As of 2016-10-01 19:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?






    Results (6 votes). Check out past polls.