Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: File::Find redux: how to limit hits?

by Kanji (Parson)
on Jun 04, 2002 at 01:09 UTC ( [id://171370]=note: print w/replies, xml ) Need Help??


in reply to File::Find redux: how to limit hits?

There's probably a more graceful way of doing this, but an eval/die combo should work...

my $MAXHITS = 100; eval { find( \&wanted => $dir ); }; die $@ if $@ && $@ ne "Limit reached\n"; { my $hit_no = 1; sub wanted { die "Limit reached\n" if ++$hit_no > $MAXHITS; printf "%03d %s\n", $hit_no, $File::Find::name; } }

    --k.


Replies are listed 'Best First'.
Re: Re: File::Find redux: how to limit hits?
by grinder (Bishop) on Jun 04, 2002 at 12:15 UTC
    The only way I can see to do it if you want to avoild the eval/die combo is to use $File::Find::prune. This appears to do the trick:

    #! /usr/bin/perl -w use strict; use File::Find; my @hits = (); my $hit_lim = shift || 20; find( sub { if( scalar @hits >= $hit_lim ) { $File::Find::prune = 1; return; } elsif( -d $_ ) { return; } push @hits, $File::Find::name; }, shift || '.' ); $, = "\n"; print @hits, "\n";

    The only problem is that you don't have much control over the order in which File::Find descends through the various directories. (Hint: it is not alphabetical).


    print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (6)
As of 2024-03-29 11:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found