NAME
Filesys::POSIX::Userland::Find - Crawl directories in a filesystem
SYNOPSIS
use Filesys::POSIX;
use Filesys::POSIX::Real;
my $fs = Filesys::POSIX->new(Filesys::POSIX::Real->new,
'special' => 'real:/home/foo',
'noatime' => 1
);
$fs->find(sub {
my ($path, $inode) = @_;
printf("0%o %s\n", $inode->{'mode'}, $path->full);
}, '/');
DESCRIPTION
This module provides an extension module to Filesys::POSIX that operates very similarly in principle to the Perl Core module File::Find, albeit with some minor differences and fewer options. For the sake of efficiency, tail recursion, rather than pure call recursion, is used to handle very deep hierarchies.
USAGE
$fs->find($callback, @paths)
$fs->find($callback, $options, @paths)
-
$fs->find
will perform recursive descent into each path passed, printing the full pathname of each item found relative to each item found in the@paths
list. For each item found, both a Filesys::POSIX::Path object, and an inode, respectively, are passed as the sole arguments to the callback. With this mechanism, it is possible to retrieve path data from each item in every way currently provided by File::Find, without retaining global state to do so. As a reference to the corresponding item's inode object is passed, there is no need to perform a$fs->stat
call to further inspect the item.When called with an
$options
argument, specified in the form of an anonymous HASH, the following flags (whose values are set nonzero) are honored:follow
-
Any symlinks found along the way are resolved; if the paths they resolve to are those of directories, then further descent will be made into said directories.