NAME
Data::Diff - data structure comparison module
SYNOPSIS
use Data::Diff qw(diff);
# simple procedural interface to raw difference output
$out = diff( $a, $b );
# OO usage
$diff = Data::Diff->new( $a, $b );
$new = $diff->apply();
$changes = $diff->diff_a();
DESCRIPTION
Data::Diff computes the differences between two abirtray complex data structures.
METHODS
Creation
- new Data::Diff( $a, $b, $options )
-
Creates and retruns a new Data::Diff object with the differences between $a and $b.
Access
- apply( $options )
-
Returns the result of applying one side over the other.
- raw()
-
Returns the internal data structure that describes the differences at all levels within.
Functions
- Diff( $a, $b, $options )
-
Compares the two arguments $a and $b and returns the raw comparison between the two.
EXPORT
Nothing by default but you can choose to export the non-OO function Diff().
NOTES
Difference Description Structure
The data structure returned by both the method raw and the function Diff. follow this same convention of metadata. The value returned is always a hash reference and the hash will have one or more of the following hash keys: type
, same
, diff
, diff_a
, diff_b
, uniq_a
and uniq_b
.
The type
key is just a scalar string that is the data type of the sub elements in metadata. The data type of the values, for the other keys, depend on the input values that were passed in via the $a and $b references. for example if $a and $b were both array references then all of the keys in the metadata structure will be array references. Recusively the elements in the array references for the diff
key and the same
key will also be of the same metadata structure. The values of the elements in the diff_a
, diff_b
, uniq_a
and uniq_b
will not have any metadata associated with them since they represent the orignal values from the input.
If you thought your structure of array and hash references was a mess just wait till this modules get ahold of it.
BUGS
The Data::Diff does not have any way to detect a cycle in the references and will crash if there is a loop.
The module does its best to handle things like HANDLES and CODE and LVALUES but it might not do the best job because visiblity into those data types is poor.
AUTHOR
George Campbell, <gilko@gilko.com>
Copyright (c) 1996-98 George Campbell. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
perl.