1String::Diff(3)       User Contributed Perl Documentation      String::Diff(3)
2
3
4

NAME

6       String::Diff - Simple diff to String
7

SYNOPSIS

9         use String::Diff;
10         use String::Diff qw( diff_fully diff diff_merge diff_regexp );# export functions
11
12         # simple diff
13         my($old, $new) = String::Diff::diff('this is Perl', 'this is Ruby');
14         print "$old\n";# this is [Perl]
15         print "$new\n";# this is {Ruby}
16
17         my $diff = String::Diff::diff('this is Perl', 'this is Ruby');
18         print "$diff->[0]\n";# this is [Perl]
19         print "$diff->[1]\n";# this is {Ruby}
20
21         my $diff = String::Diff::diff('this is Perl', 'this is Ruby',
22             remove_open => '<del>',
23             remove_close => '</del>',
24             append_open => '<ins>',
25             append_close => '</ins>',
26         );
27         print "$diff->[0]\n";# this is <del>Perl</del>
28         print "$diff->[1]\n";# this is <ins>Ruby</ins>
29
30         # merged
31         my $diff = String::Diff::diff_merge('this is Perl', 'this is Ruby');
32         print "$diff\n";# this is [Perl]{Ruby}
33
34         my $diff = String::Diff::diff_merge('this is Perl', 'this is Ruby',
35             remove_open => '<del>',
36             remove_close => '</del>',
37             append_open => '<ins>',
38             append_close => '</ins>',
39         );
40         print "$diff\n";# this is <del>Perl</del><ins>Ruby</ins>
41
42         # change to default marks
43         %String::Diff::DEFAULT_MARKS = (
44             remove_open  => '<del>',
45             remove_close => '</del>',
46             append_open  => '<ins>',
47             append_close => '</ins>',
48             separator    => '&lt;-OLD|NEW-&gt;', # for diff_merge
49         );
50
51         # generated for regexp
52         my $diff = String::Diff::diff_regexp('this is Perl', 'this is Ruby');
53         print "$diff\n";# this\ is\ (?:Perl|Ruby)
54
55         # detailed list
56         my $diff = String::Diff::diff_fully('this is Perl', 'this is Ruby');
57         for my $line (@{ $diff->[0] }) {
58             print "$line->[0]: '$line->[1]'\n";
59         }
60         # u: 'this is '
61         # -: 'Perl'
62
63         for my $line (@{ $diff->[1] }) {
64             print "$line->[0]: '$line->[1]'\n";
65         }
66         # u: 'this is '
67         # +: 'Ruby'
68

DESCRIPTION

70       String::Diff is the difference of a consecutive string is made.  after
71       general diff is done, the difference in the line is searchable.
72
73       the mark of the addition and the deletion can be freely changed.  the
74       color is colored to the terminal with ANSI, using the HTML display it.
75
76       after the line is divided, diff is taken when 'linebreak' option is
77       specified.
78
79         my($old_string, $new_string) = String::Diff::diff_fully('this is Perl', 'this is Ruby', linebreak => 1);
80         my($old_string, $new_string) = String::Diff::diff('this is Perl', 'this is Ruby', linebreak => 1);
81         my $string = String::Diff::diff_merge('this is Perl', 'this is Ruby', linebreak => 1);
82         my $string = String::Diff::diff_regexp('this is Perl', 'this is Ruby', linebreak => 1);
83
84       In diff and diff_merge methods the mark of the difference can be
85       changed.
86
87         my $diff = String::Diff::diff('this is Perl', 'this is Ruby',
88             remove_open => '<del>',
89             remove_close => '</del>',
90             append_open => '<ins>',
91             append_close => '</ins>',
92         );
93
94       You can escape callback set to diff function and diff_merge function.
95
96         use HTML::Entities
97         my($diff_old, $diff_new) = String::Diff::diff(
98             'this is <b>Perl</b>',
99             'this is <b><BIG>R</BIG>uby</b>',
100             remove_open => '<del>',
101             remove_close => '</del>',
102             append_open => '<ins>',
103             append_close => '</ins>',
104             escape       => sub { encode_entities($_[0]) },
105         });
106         is($diff_old, 'this is &lt;b&gt;<del>Perl</del>&lt;/b&gt;');
107         is($diff_new, 'this is &lt;b&gt;<ins>&lt;BIG&gt;R&lt;/BIG&gt;uby</ins>&lt;/b&gt;');
108

METHODS

110       diff_fully
111             the list that divides diff according to the mark is returnd.
112
113               my($old_string, $new_string) = String::Diff::diff_fully('this is Perl', 'this is Ruby');
114
115       diff
116             abd the mark of the deletion and the addition is given to the string.
117
118       diff_merge
119             old and new string is merged with diff.
120
121       diff_regexp
122             the regular expression to which old string and new string are matched with regexp is returned.
123

AUTHOR

125       Kazuhiro Osawa <yappo {@} shibuya {dot} pl>
126

SEE ALSO

128       Algorithm::Diff
129

LICENSE

131       Copyright 2008 (C) Kazuhiro Osawa
132
133       This library is free software; you can redistribute it and/or modify it
134       under the same terms as Perl itself.
135
136
137
138perl v5.38.0                      2023-07-21                   String::Diff(3)
Impressum