File::Find::Node is an object oriented module that works similarly
to the File::Find module.  It recursively traverses a directory tree
and processes each item using callback functions supplied by the user.

use File::Find::Node;
my $f = File::Find::Node->new("path");

The new() constructor creates a top level File::Find::Node object.  The
$f->process() method takes a code reference to a callback function.  The
$f->find method traverses the directory tree.  It creates a
File::Find::Node object for each item and passes it to the callback

The top level object has methods that do the following:

o specify a callback function that is called for each item.
  If a directory, the function is called before traversing it.

o specify a callback function that is called for each directory
  after traversing it.

o specify a function to filter file names before traversing a directory.
  This function may sort and/or remove file names.

o specify a function to be called if there is an error.

o enable/disable following symbolic links.

Objects passed to callback functions have methods that provide
information about the current item including:

o path name of the item,

o file name (base name),

o stat() information using methods similar to File::stat and the Unix
  find command,

o depth level of the item,

o test if a file or directory is empty.

Other methods do the following:

o access the parent directory object;

o store arbitrary data in the object (flags, counters, totals or other
  state information);

o skip parts of the traversal (prune a directory);

o terminate the traversal;

o traverse a directory tree with a concurrent sub process;

o refresh saved stat() information.


o Object oriented interface, no exported symbols, no global variables.

o Passes objects to callback functions.

  Simplifies coding callbacks because object methods provide easy access
  to file information.

o Can store arbitrary data in an object.

  Easy to accumulate counters or totals per directory.  Can save state
  information between calls to callbacks.

o Provides access to the parent directory object.

  Decisions can be based on the current object and its parent directory.

o Can easily prune directories or stop traversal entirely.

o Can traverse two or more directory trees concurrently.

o Space and time efficient.

  Only the current object and the linear chain of parent objects require
  memory.  Stat() information is saved in the object, which eliminates
  extra calls to stat() and/or lstat().


To install this module, run the following commands:

    perl Makefile.PL
    make test
    make install


After installing, you can find documentation for this module with the
perldoc command.

    perldoc File::Find::Node

You can also look for information at:

    RT, CPAN's request tracker

    AnnoCPAN, Annotated CPAN documentation

    CPAN Ratings

    Search CPAN


Copyright (C) 2008 Stephen C. Losen

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.