1Algorithm::DiffOld(3) User Contributed Perl DocumentationAlgorithm::DiffOld(3)
2
3
4
6 Algorithm::DiffOld - Compute `intelligent' differences between two
7 files / lists but use the old (<=0.59) interface.
8
10 This has been provided as part of the Algorithm::Diff package by Ned
11 Konz. This particular module is ONLY for people who HAVE to have the
12 old interface, which uses a comparison function rather than a key gen‐
13 erating function.
14
15 Because each of the lines in one array have to be compared with each of
16 the lines in the other array, this does M*N comparisions. This can be
17 very slow. I clocked it at taking 18 times as long as the stock version
18 of Algorithm::Diff for a 4000-line file. It will get worse quadrati‐
19 cally as array sizes increase.
20
22 use Algorithm::DiffOld qw(diff LCS traverse_sequences);
23
24 @lcs = LCS( \@seq1, \@seq2, $comparison_function );
25
26 $lcsref = LCS( \@seq1, \@seq2, $comparison_function );
27
28 @diffs = diff( \@seq1, \@seq2, $comparison_function );
29
30 traverse_sequences( \@seq1, \@seq2,
31 { MATCH => $callback,
32 DISCARD_A => $callback,
33 DISCARD_B => $callback,
34 },
35 $comparison_function );
36
38 Each of the main routines should be passed a comparison function. If
39 you aren't passing one in, use Algorithm::Diff instead.
40
41 These functions should return a true value when two items should com‐
42 pare as equal.
43
44 For instance,
45
46 @lcs = LCS( \@seq1, \@seq2, sub { my ($a, $b) = @_; $a eq $b } );
47
48 but if that is all you're doing with your comparison function, just use
49 Algorithm::Diff and let it do this (this is its default).
50
51 Or:
52
53 sub someFunkyComparisonFunction
54 {
55 my ($a, $b) = @_;
56 $a =~ m{$b};
57 }
58
59 @diffs = diff( \@lines, \@patterns, \&someFunkyComparisonFunction );
60
61 which would allow you to diff an array @lines which consists of text
62 lines with an array @patterns which consists of regular expressions.
63
64 This is actually the reason I wrote this version -- there is no way to
65 do this with a key generation function as in the stock Algorithm::Diff.
66
67
68
69perl v5.8.8 2006-07-31 Algorithm::DiffOld(3)