#!/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";