Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Finding oldest file in directory

by Roy Johnson (Monsignor)
on Oct 18, 2004 at 19:12 UTC ( #400283=note: print w/ replies, xml ) Need Help??


in reply to Finding oldest file in directory

Finding the oldest/most recent/minimum/maximum of a list does not require sorting. For a 10-file directory, it's not a big deal, but the right tool for the job is a simple max-finder:

my $oldest; my $oldtime = 0; for (glob "$dir/*.pl") { my $thistime = -C; if ($thistime > $oldtime) { ($oldest, $oldtime) = ($_, $thistime); } }
You could do this at kind of the same programming level as you're trying to by using List::Util 'reduce':
use List::Util 'reduce'; my $file = (reduce {$a->[0] < $b->[0] ? $a : $b} map {[(stat)[10],$_]} glob '*.pl' )->[1];
That makes for somewhat complicated reading, though, and might be better broken into more steps.

Update: for posterity: the map above is only useful for reducing the number of times stat is called, from 2*N to N. The overhead of map and storing the values and dereferencing is probably not worth it. It's certainly simpler to say

my $file = reduce {(stat $a)[10] < (stat $b)[10] ? $a : $b} glob '*.pl';

Caution: Contents may have been coded under pressure.


Comment on Re: Finding oldest file in directory
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (9)
As of 2015-07-29 19:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (267 votes), past polls