in reply to Re: Recursive Subdirectories
in thread Recursive Subdirectories

Recursively searching directories is much easier than this.
Even easier than File::Find is File::Find::Rule
use File::Find::Rule; my @files = find( file => exec => sub { -A < (time - (3600 * 24 * 10) }, in => '.', );
See. the File::Find::Rule docs for more info on this fantabulous module.
HTH

_________
broquaint

Replies are listed 'Best First'.
Re: Re: Re: Recursive Subdirectories
by runrig (Abbot) on Apr 16, 2003 at 18:03 UTC
    exec => sub { -A < (time - (3600 * 24 * 10) },
    I was going to write the following:

    The module lets you write that more convieniently as:

    accessed => "<10",
    But on testing I found there is a subtle difference between the '-A' operator and the return value of atime from stat() (which FFR's 'atime' method uses) (update: and 'accessed' is just a binary method, it's 'atime' that uses stat) that makes both of our answers wrong. '-A' returns the length of time in days since the last access, and stat's atime is the last access time in epoch seconds. So the correct answer would be a combination of our answers:
    my $time = time - (3600 * 24 * 10); ... atime => ">=$time", # Or it would be about as easy to just say exec => sub { -A < 10 },
    Update: I was initially trying to use 'accessed' incorrectly, then I later found I should have been using 'atime'. Updated code. In FFR, 'accessed' is a binary/boolean method (which makes it practically useless) and doesn't take arguments. All '-X' operators are mapped to boolean methods in FFR, it would be nice to change this.

      -A is based on $^T not time(). So you want

      my $time = $^T - 10*24*60*60;
      no? (And yes, for fast-running scripts, the difference is not important.) (:

                      - tye