parse_dir - parse directory listing


SYNOPSIS

        use File::Listing;
        for (parse_dir(`ls -l`)) {
            ($name, $type, $size, $mtime, $mode) = @$_;
            next if $type ne 'f'; # plain file
            #...
        }

        # directory listing can also be read from a file
        open(LISTING, "zcat ls-lR.gz|");
        $dir = parse_dir(\*LISTING, '+0000');



DESCRIPTION

       The parse_dir() routine can be used to parse directory
       listings. Currently it only understand Unix 'ls -l' and
       'ls -lR' format.  It should eventually be able to most
       things you might get back from a ftp server file listing
       (LIST command), i.e. VMS listings, NT listings, DOS
       listings,...

       The first parameter to parse_dir() is the directory
       listing to parse.  It can be a scalar, a reference to an
       array of directory lines or a glob representing a
       filehandle to read the directory listing from.

       The second parameter is the time zone to use when parsing
       time stamps in the listing. If this value is undefined,
       then the local time zone is assumed.

       The third parameter is the type of listing to assume.  The
       values will be strings like 'unix', 'vms', 'dos'.
       Currently only 'unix' is implemented and this is also the
       default value.  Ideally, the listing type should be
       determined automatically.

       The fourth parameter specify how unparseable lines should
       be treated.  Values can be 'ignore', 'warn' or a code
       reference.  Warn means that the perl warn() function will
       be called.  If a code reference is passed, then this
       routine will be called and the return value from it will
       be incorporated in the listing.  The default is 'ignore'.

       Only the first parameter is mandatory.  The parse_dir()
       prototype is ($;$$$).

       The return value from parse_dir() is a list of directory
       entries.  In scalar context the return value is a
       reference to the list.  The directory entries are
       represented by an array consisting of [ $filename,
       '?'.  The $filetime value is converted to seconds since
       Jan 1, 1970.  The $filemode is a bitmask like the mode
       returned by stat().


CREDITS

       Based on lsparse.pl (from Lee McLoughlin's ftp mirror
       package) and Net::FTP's parse_dir (Graham Barr).