File::Find::Parallel 0.0.4
Sponsored Links
File::Find::Parallel 0.0.4 Ranking & Summary
File size:
0.009 MB
Platform:
Any Platform
License:
Perl Artistic License
Price:
Downloads:
840
Date added:
2007-07-07
Publisher:
Andy Armstrong
File::Find::Parallel 0.0.4 description
File::Find::Parallel allows you to traverse a number of similar directories in parallel.
SYNOPSIS
use File::Find::Parallel;
my $ffp = File::Find::Parallel->new( qw( /foo /bar ) );
print "Union:n";
my $union = $ffp->any_iterator
print " $_n" while $_ = $union->();
print "Intersection:n";
my $inter = $ffp->all_iterator
print " $_n" while $_ = $inter->();
File::Find is the ideal tool for quickly scanning a single directory. But sometimes its nice to be able to perform operations on multiple similar directories in parallel. Perhaps you need to compare the contents of two directories or convert files that are shared in more than one directory into hard links.
This module manufactures iterators that visit each file and directory in either the union or the intersection of a number of directories. Hmm. What does that mean?
Given two directory trees like this
foo
foo/a
foo/b/c
foo/d
bar
bar/a
bar/b
bar/e
you can choose to work with the intersection of the two directory structures:
.
./a
./b
That is the subdirectories and files that the foo and bar share.
Alternately you can work with the union of the two directory structures:
.
./a
./b
./b/c
./d
./e
Still not clear? Well, if you wanted to do a recursive diff on the two directories youd iterate their union so you could report files that were present in foo but missing from bar and vice-versa.
If, on the other hand you wanted to scan the directories and find all the files that are common to all of them youd iterate their intersection and receive only files and directories that were present in all the directories being scanned.
The any_iterator and all_iterator are built on a more general purpose method: want_iterator. If, for example, you want to make links between files that are found in more than one directory you might get your iterator like this:
my $iter = $ffp->want_iterator( 2 );
The apparently magic 2 reflects the fact that if youre going to be making links you need at least two files. No matter how many directories you are iterating over in parallel you will only see files and directories that appear in at least two of those directories.
File::Find::Parallel can scan any number of directories at the same time. Heres an example (on Unix systems) that returns the list of all files and directories that are contained in all home directories.
use File::Glob :glob;
use File::Find::Parallel;
my $find = File::Find::Parallel->new( bsd_glob( /home/* ) );
my @common = ( );
my $iter = $find->all_iterator;
while ( defined my $obj = $iter->() ) {
push @common, $obj;
}
print "The following files are common to ",
"all directories below /home :n";
print " $_n" for @common;
For a complete concrete example of its use see lncopies in the bin subdirectory of this distribution.
Iterators
The iterator returned by any_iterator, all_iterator or want_iterator is a code reference. Call it to get the next file or directory. When all files and directories have been returned the iterator will return undef.
Once created an iterator is independent of the File::Find::Parallel object that created it. If the object goes out of scope and is destroyed during the life of the iterator it will still function normally.
You may have many active iterators for a single File::Find::Parallel object at any time.
SYNOPSIS
use File::Find::Parallel;
my $ffp = File::Find::Parallel->new( qw( /foo /bar ) );
print "Union:n";
my $union = $ffp->any_iterator
print " $_n" while $_ = $union->();
print "Intersection:n";
my $inter = $ffp->all_iterator
print " $_n" while $_ = $inter->();
File::Find is the ideal tool for quickly scanning a single directory. But sometimes its nice to be able to perform operations on multiple similar directories in parallel. Perhaps you need to compare the contents of two directories or convert files that are shared in more than one directory into hard links.
This module manufactures iterators that visit each file and directory in either the union or the intersection of a number of directories. Hmm. What does that mean?
Given two directory trees like this
foo
foo/a
foo/b/c
foo/d
bar
bar/a
bar/b
bar/e
you can choose to work with the intersection of the two directory structures:
.
./a
./b
That is the subdirectories and files that the foo and bar share.
Alternately you can work with the union of the two directory structures:
.
./a
./b
./b/c
./d
./e
Still not clear? Well, if you wanted to do a recursive diff on the two directories youd iterate their union so you could report files that were present in foo but missing from bar and vice-versa.
If, on the other hand you wanted to scan the directories and find all the files that are common to all of them youd iterate their intersection and receive only files and directories that were present in all the directories being scanned.
The any_iterator and all_iterator are built on a more general purpose method: want_iterator. If, for example, you want to make links between files that are found in more than one directory you might get your iterator like this:
my $iter = $ffp->want_iterator( 2 );
The apparently magic 2 reflects the fact that if youre going to be making links you need at least two files. No matter how many directories you are iterating over in parallel you will only see files and directories that appear in at least two of those directories.
File::Find::Parallel can scan any number of directories at the same time. Heres an example (on Unix systems) that returns the list of all files and directories that are contained in all home directories.
use File::Glob :glob;
use File::Find::Parallel;
my $find = File::Find::Parallel->new( bsd_glob( /home/* ) );
my @common = ( );
my $iter = $find->all_iterator;
while ( defined my $obj = $iter->() ) {
push @common, $obj;
}
print "The following files are common to ",
"all directories below /home :n";
print " $_n" for @common;
For a complete concrete example of its use see lncopies in the bin subdirectory of this distribution.
Iterators
The iterator returned by any_iterator, all_iterator or want_iterator is a code reference. Call it to get the next file or directory. When all files and directories have been returned the iterator will return undef.
Once created an iterator is independent of the File::Find::Parallel object that created it. If the object goes out of scope and is destroyed during the life of the iterator it will still function normally.
You may have many active iterators for a single File::Find::Parallel object at any time.
File::Find::Parallel 0.0.4 Screenshot
File::Find::Parallel 0.0.4 Keywords
Parallel 0.0.4
Files and Directories
in parallel
to traverse
directories
iterator
files
directory
print
parallel
File::Find::Parallel
FileFindParallel
File::Find::Parallel 0.0.4
Libraries
Programming
Bookmark File::Find::Parallel 0.0.4
File::Find::Parallel 0.0.4 Copyright
WareSeeker periodically updates pricing and software information of File::Find::Parallel 0.0.4 full version from the publisher, so some information may be slightly out-of-date. You should confirm all information before relying on it. Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future development of File::Find::Parallel 0.0.4 Edition. Download links are directly from our publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed
Featured Software
Want to place your software product here?
Please contact us for consideration.
Contact WareSeeker.com
Related Information
reverse phone directory
telephone directory
phone directory
reverse directory
reverse telephone directory
zip code directory
sublime directory
resistors in parallel
in parallel definition
batteries in parallel
directories associated with
filesharing
directory 411
vista 15p multiple sounders in series parallel
journal on parallel system architecture
capacitors in parallel
wav files
java iterator
Related Software
File::DirCompare is a Perl module to compare two directories using callbacks. Free Download
gvfsfind searches for files in a directory hierarchy. Free Download
File::Repl is a Perl module that provides file replication utilities. Free Download
File::Next::OO is a Perl module with file-finding iterator Wrapper for File::Next::files function. Free Download
DupeFinder is a simple application for locating, moving, renaming, and deleting duplicate files in a directory structure. Free Download
wyoFiler is a filer showing the directory hierarchy and the files in the same tree window. Free Download
Menu File Browser Applet is an applet for the GNOME Panel. Free Download
File Lister provides a Web interface for listing files and directories. Free Download
Latest Software
Popular Software
Favourite Software