Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Algorithm::DiffOld.3pm
1 .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el       .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD.  Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 .    de IX
53 .    tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 .    nr % 0
56 .    rr F
57 .\}
58 .el \{\
59 .    de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
65 .    \" fudge factors for nroff and troff
66 .if n \{\
67 .    ds #H 0
68 .    ds #V .8m
69 .    ds #F .3m
70 .    ds #[ \f1
71 .    ds #] \fP
72 .\}
73 .if t \{\
74 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 .    ds #V .6m
76 .    ds #F 0
77 .    ds #[ \&
78 .    ds #] \&
79 .\}
80 .    \" simple accents for nroff and troff
81 .if n \{\
82 .    ds ' \&
83 .    ds ` \&
84 .    ds ^ \&
85 .    ds , \&
86 .    ds ~ ~
87 .    ds /
88 .\}
89 .if t \{\
90 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 .    \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 .    \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 .    \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 .    ds : e
114 .    ds 8 ss
115 .    ds o a
116 .    ds d- d\h'-1'\(ga
117 .    ds D- D\h'-1'\(hy
118 .    ds th \o'bp'
119 .    ds Th \o'LP'
120 .    ds ae ae
121 .    ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "Algorithm::DiffOld 3"
127 .TH Algorithm::DiffOld 3 "2006-07-31" "perl v5.8.7" "User Contributed Perl Documentation"
128 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 Algorithm::DiffOld \- Compute `intelligent' differences between two files / lists
134 but use the old (<=0.59) interface.
135 .SH "NOTE"
136 .IX Header "NOTE"
137 This has been provided as part of the Algorithm::Diff package by Ned Konz.
138 This particular module is \fB\s-1ONLY\s0\fR for people who \fB\s-1HAVE\s0\fR to have the old
139 interface, which uses a comparison function rather than a key generating
140 function.
141 .PP
142 Because each of the lines in one array have to be compared with each 
143 of the lines in the other array, this does M*N comparisions. This can
144 be very slow. I clocked it at taking 18 times as long as the stock
145 version of Algorithm::Diff for a 4000\-line file. It will get worse
146 quadratically as array sizes increase.
147 .SH "SYNOPSIS"
148 .IX Header "SYNOPSIS"
149 .Vb 1
150 \&  use Algorithm::DiffOld qw(diff LCS traverse_sequences);
151 \&
152 \&  @lcs    = LCS( \e@seq1, \e@seq2, $comparison_function );
153 \&
154 \&  $lcsref = LCS( \e@seq1, \e@seq2, $comparison_function );
155 \&
156 \&  @diffs = diff( \e@seq1, \e@seq2, $comparison_function );
157 \&  
158 \&  traverse_sequences( \e@seq1, \e@seq2,
159 \&                     { MATCH => $callback,
160 \&                       DISCARD_A => $callback,
161 \&                       DISCARD_B => $callback,
162 \&                     },
163 \&                     $comparison_function );
164 .Ve
165 .SH "COMPARISON FUNCTIONS"
166 .IX Header "COMPARISON FUNCTIONS"
167 Each of the main routines should be passed a comparison function. If you
168 aren't passing one in, \fBuse Algorithm::Diff instead\fR.
169 .PP
170 These functions should return a true value when two items should compare
171 as equal.
172 .PP
173 For instance,
174 .PP
175 .Vb 1
176 \&  @lcs    = LCS( \e@seq1, \e@seq2, sub { my ($a, $b) = @_; $a eq $b } );
177 .Ve
178 .PP
179 but if that is all you're doing with your comparison function, just use
180 Algorithm::Diff and let it do this (this is its default).
181 .PP
182 Or:
183 .PP
184 .Vb 5
185 \&  sub someFunkyComparisonFunction
186 \&  {
187 \&        my ($a, $b) = @_;
188 \&        $a =~ m{$b};
189 \&  }
190 \&
191 \&  @diffs = diff( \e@lines, \e@patterns, \e&someFunkyComparisonFunction );
192 .Ve
193 .PP
194 which would allow you to diff an array \f(CW@lines\fR which consists of text
195 lines with an array \f(CW@patterns\fR which consists of regular expressions.
196 .PP
197 This is actually the reason I wrote this version \*(-- there is no way
198 to do this with a key generation function as in the stock Algorithm::Diff.