File::Version version 0.02
==========================
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
There are no dependencies
SYNOPSIS
use File::Version;
my %args = (
FILE => 'foo.txt',
SEARCH_PATHS => ['/projects'],
RECURSION_DEPTH => 10,
FOLLOW_SYMBOLIC => 0
);
my $foo = File::Version->new(%args);
METHODS
· $foo->locate_ancestors; # recursively search /project 10
directories deep for all 'foo.txt' ancestors
· $foo->locate_descendants; # recursively search /project
10 directories deep for all 'foo.txt' descendants
· $foo->next_version; # next version of 'foo.txt'
· $foo->search_paths( SEARCH_PATHS => [ '/home' ] ); # now
search all home directories
· $foo->recursion_depth( RECURSION_DEPTH => 5 ); # now
seach only 5 directories deep
· $foo->follow_symbolic( FOLLOW_SYMBOLIC => 1 ); # follow
symbolic links (not recommended)
DESCRIPTION
This module is useful for creating and locating different
versions of a file. For example, let's say you're working
with a first generation file named foo.txt. Before pro
ceeding, we gather some information about the foo.txt fam
ily tree:
my %args = (
FILE => '/path/foo.txt',
SEARCH_PATHS => ['/home'],
RECURSION_DEPTH => 10,
FOLLOW_SYMBOLIC => 0
);
my $foo = File::Version->new(%args);
$foo->locate_descendants might return the following refer
ence :
$ref = {
'1' => {
'/home/bill/1__foo.txt' => '1',
'/home/mary/foobar/test/2__foo.txt' => '2'
},
'2' => {
'/home/bill/2_1__foo.txt' => '1',
'/home/john/project/2_2__foo.txt' => '2'
'/home/fred/mystuff/1_1__foo.txt' => '1'
},
'3' => {
'/home/jill/2_2_1__foo.txt' => '1'
}
};
meaning that foo.txt has :
2 children, 3 grandchildren, 1 great grandchild
$foo->locate_ancestors has the opposite effect, returning
undef in this case because foo.txt is an original file.
$foo->next_version returns '3__foo.txt', meaning the third
child of foo.txt. A file named '3_1__foo.txt' would mean
the first child of foo.txt's third child.
SUGGESTIONS
· Use the Algorithm::Diff module to compare different
versions.
· The cp_version.pl script (provided with this module)
takes filenames as arguments from the command line and
spits out the next version of each file. Alias this
script for your convenience.
BUGS
This module was written and tested using Perl 5.6.0 under
Linux. If you want this module to work with Windows, at
minimum you'll need to change the directory separator to a
backslash. Comments and suggestions welcome.
AUTHOR
Nathaniel J. Graham <broom@pincer.org>
COPYRIGHT
Copyright 2003, Nathaniel J. Graham. All Rights Reserved.
This program is free software. You may copy or redis
tribute it under the same terms as Perl itself.