Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: File::Glob infinite loop with while loop unlike core glob function

by jpl (Monk)
on Aug 01, 2011 at 14:29 UTC ( #917861=note: print w/ replies, xml ) Need Help??


in reply to File::Glob infinite loop with while loop unlike core glob function

One, perhaps final, comment. In the process of writing a short program to reproduce the behavior (in case someone, probably me, decides to file a bug report, my earlier whinging notwithstanding), I came up with this:

#!/usr/bin/perl -w use strict; use File::Glob ':glob'; my $dir = shift || "/etc"; my $max = shift || 10000; my $entries = 0; while (glob("$dir/*")) { last if (++$entries > $max); } print($entries, " items under $dir\n");
If I comment out the use File::Glob ':glob'; to get a run with the core glob, then put it back in, I see the following
time globbug.pl /etc 20000 279 items under /etc real 0m0.00s user 0m0.00s sys 0m0.00s time globbug.pl /etc 280 281 items under /etc real 0m0.15s user 0m0.09s sys 0m0.06s
The first (core) run demonstrates that there are 279 entries in my /etc, and it takes almost no time to determine that. The second run, confined to stop after it is demonstrably wrong, takes quite a while to be wrong. This is consistent with it rebuilding the entire list for each iteration, then throwing away all but the last item.


Comment on Re: File::Glob infinite loop with while loop unlike core glob function
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (9)
As of 2014-08-22 10:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (153 votes), past polls