I asked a question a couple of days back on perl beginners at Yahoo groups as well on
other forums.
to compare two text files/strings and to print the results if both are different and
was advised to use Text::Diff.
Actually, I am working on project of transcription, where typist types the $text1 and
save it. Then the QA (Quality Control) person logs in and make appropriate corrections
to file and save it again as $text2. Now I have to compare $text1 with $text2 for the
feedback of typist, so that he can view the changes QA made to the file and should not
repeat the same in the next files.
So far so good, I used the Text::Diff and it solved my problem, when I tested it for
small text containing 3 - 4 lines paragraph. Now the problem arises again. I tested
it for 3-4 lines paragraph, but when script went live, the text strings were quite big
like some contained 20 lines in a single paragraph. Text::Diff matches until \n || \r
is inserted. Okay, the module is doing it's job well I have no problems with it. Now
the problem is if only QA changes 'is' to 'was' or removes any white space character
in 20 lines. Text::Diff prints the whole 20 lines because the changes were made. So
sometime typist reads whole 20 lines and found nothing in it except for removal of
white space which obviously he is unable to see or sometime only 'is' to 'was' change
(if the file contains no other big mistakes). So instead of helping the typist to
review the feedback from QA, it becomes a time waster.
Now, I am looking for a way where I can highlight (by enclosing changes with
<B></B>tags) the changes (if the $text2 is different from $text1) either within the
output of Text::Diff or separately from it.
TIA,
Sara.
-------------------------------------------------------------
#!/usr/bin/perl
use Text::Diff;
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
my $q = new CGI;
my $text1 = $q->param('text1') || 'this is text line and it contains the ___ line';
my $text2 = $q->param('text2') || 'this is text line and it contains no blank line';
print $q->header();
my @output;
my $diff = diff \$text1, \$text2, { STYLE => "Context",
OUTPUT => [EMAIL PROTECTED],
CONTEXT => 0,
};
print "@output";