Raw content of Algorithm::DiffOld
# This is a version of Algorithm::Diff that uses only a comparison function,
# like versions <= 0.59 used to.
# $Revision: 1.1 $
package Algorithm::DiffOld;
use strict;
use vars qw($VERSION @EXPORT_OK @ISA @EXPORT);
use integer; # see below in _replaceNextLargerWith() for mod to make
# if you don't use this
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw();
@EXPORT_OK = qw(LCS diff traverse_sequences);
$VERSION = 1.10; # manually tracking Algorithm::Diff
# McIlroy-Hunt diff algorithm
# Adapted from the Smalltalk code of Mario I. Wolczko,
# by Ned Konz, perl@bike-nomad.com
=head1 NAME
Algorithm::DiffOld - Compute `intelligent' differences between two files / lists
but use the old (<=0.59) interface.
=head1 NOTE
This has been provided as part of the Algorithm::Diff package by Ned Konz.
This particular module is B for people who B to have the old
interface, which uses a comparison function rather than a key generating
function.
Because each of the lines in one array have to be compared with each
of the lines in the other array, this does M*N comparisions. This can
be very slow. I clocked it at taking 18 times as long as the stock
version of Algorithm::Diff for a 4000-line file. It will get worse
quadratically as array sizes increase.
=head1 SYNOPSIS
use Algorithm::DiffOld qw(diff LCS traverse_sequences);
@lcs = LCS( \@seq1, \@seq2, $comparison_function );
$lcsref = LCS( \@seq1, \@seq2, $comparison_function );
@diffs = diff( \@seq1, \@seq2, $comparison_function );
traverse_sequences( \@seq1, \@seq2,
{ MATCH => $callback,
DISCARD_A => $callback,
DISCARD_B => $callback,
},
$comparison_function );
=head1 COMPARISON FUNCTIONS
Each of the main routines should be passed a comparison function. If you
aren't passing one in, B