#!/usr/bin/perl -w
use strict;
use Data::Dumper;
use Algorithm::Diff qw(diff);
my @orig = qw(a b c e h j l m n p);
my @rev = qw(b c d e f j k l m r s t);
print "Original:\t@orig\n";
print "Revision:\t@rev\n";
my $diff = diff \@orig, \@rev;
my @adds;
for my $hunk (reverse @$diff)
{
for my $change (reverse @$hunk)
{
if($change->[0] eq "-")
{
# process deletions
splice @orig, $change->[1], 1;
}
elsif ($change->[0] eq "+")
{
# defer handling additions
unshift @adds, $change;
}
}
}
# process additions
splice @orig, $_->[1], 0, $_->[2] for @adds;
print "Patched:\t@orig\n";
|