File::DirCompare man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

DirCompare(3)	      User Contributed Perl Documentation	 DirCompare(3)

NAME
       File::DirCompare - Perl module to compare two directories using
       callbacks.

SYNOPSIS
	 use File::DirCompare;

	 # Simple diff -r --brief replacement
	 use File::Basename;
	 File::DirCompare->compare($dir1, $dir2, sub {
	   my ($a, $b) = @_;
	   if (! $b) {
	     printf "Only in %s: %s\n", dirname($a), basename($a);
	   } elsif (! $a) {
	     printf "Only in %s: %s\n", dirname($b), basename($b);
	   } else {
	     print "Files $a and $b differ\n";
	   }
	 });

	 # Version-control like Deleted/Added/Modified listing
	 my (@listing, @modified);     # use closure to collect results
	 File::DirCompare->compare('old_tree', 'new_tree', sub {
	   my ($a, $b) = @_;
	   if (! $b) {
	     push @listing, "D	 $a";
	   } elsif (! $a) {
	     push @listing, "A	 $b";
	   } else {
	     if (-f $a && -f $b) {
	       push @listing, "M   $b";
	       push @modified, $b;
	     } else {
	       # One file, one directory - treat as delete + add
	       push @listing, "D   $a";
	       push @listing, "A   $b";
	     }
	   }
	 });

DESCRIPTION
       File::DirCompare is a perl module to compare two directories using a
       callback, invoked for all files that are 'different' between the two
       directories, and for any files that exist only in one or other
       directory ('unique' files).

       File::DirCompare has a single public compare() method, with the
       following signature:

	 File::DirCompare->compare($dir1, $dir2, $sub, $opts);

       The first three arguments are required - $dir1 and $dir2 are paths to
       the two directories to be compared, and $sub is the subroutine
       reference called for all unique or different files. $opts is an
       optional hashref of options - see OPTIONS below.

       The provided subroutine is called for all unique files, and for every
       pair of 'different' files encountered, with the following signature:

	 $sub->($file1, $file2)

       where $file1 and $file2 are the paths to the two files. For 'unique'
       files i.e. where a file exists in only one directory, the subroutine is
       called with the other argument 'undef' i.e. for:

	 $sub->($file1, undef)
	 $sub->(undef, $file2)

       the first indicates $file1 exists only in the first directory given
       ($dir1), and the second indicates $file2 exists only in the second
       directory given ($dir2).

   OPTIONS
       The following optional arguments are supported, passed in using a hash
       reference after the three required arguments to compare() e.g.

	 File::DirCompare->compare($dir1, $dir2, $sub, {
	   cmp => $cmp_sub,
	   ignore_unique => 1,
	 });

       cmp By default, two files are regarded as different if their contents
	   do not match (tested with File::Compare::compare). That default
	   behaviour can be overridden by providing a 'cmp' subroutine to do
	   the file comparison, returning zero if the two files are equal, and
	   non-zero if not.

	   E.g. to compare using modification times instead of file contents:

	     File::DirCompare->compare($dir1, $dir2, $sub, {
	       cmp => sub { -M $_[0] <=> -M $_[1] },
	     });

       ignore_cmp
	   If you want to see all corresponding files, not just 'different'
	   ones, set the 'ignore_cmp' flag to tell File::DirCompare to skip
	   its file comparison checks i.e.

	     File::DirCompare->compare($dir1, $dir2, $sub,
	       { ignore_cmp => 1 });

       ignore_unique
	   If you want to ignore files that only exist in one of the two
	   directories, set the 'ignore_unique' flag i.e.

	     File::DirCompare->compare($dir1, $dir2, $sub,
	       { ignore_unique => 1 });

SEE ALSO
       File::Dircmp, which provides similar functionality (and whose directory
       walking code I've adapted for this module), but a simpler reporting-
       only interface, something like the first example in the SYNOPSIS above.

AUTHOR AND CREDITS
       Gavin Carr <gavin@openfusion.com.au>

       Thanks to Robin Barker for a bug report and fix for glob problems with
       whitespace.

COPYRIGHT AND LICENSE
       Copyright 2006-2007 by Gavin Carr.

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

perl v5.14.0			  2010-03-02			 DirCompare(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net